① C#為什麼是黑客注入編程語言
態度無法替代技術,在你被別的黑客稱為黑客之前,有一套基本的技術你必須掌握。 這套基本技術隨著新技術的出現和老技術的過時也隨時間在緩慢改變
② 黑客零基礎入門
對於零基礎的朋友第一步要做的是掌握web前後端基礎和伺服器通訊原理,前後端包括h5,js,php,sql等等。
第二步要做的是熟悉當下主流的漏洞原理及利用,包括但不限於,xss,csrf,文件包含,文件上傳,遠程代碼執行,sql注入等等。
第三步就是實戰挖掘主流漏洞及代碼審計漏洞,本著非授權即違法的原則,大家 不要去找非授權的網站去黑,大家可以在各大SRC平台上挖掘漏洞,SRC即漏洞響應平台。
進入學習階段:
首先是我給大家推薦的是前端的html/css/js + php進行學習,前端的這些都是肯定需要學習的知識,至於後端的編程語言我建議還是php,主要是因為入門學習快、目的呢就是更快的接觸到php+mysql開發。
這樣前前後後的知識加起來才能在知識鏈上完整構成一個網站,這樣做的好處的就是快速了解一個網站如何開發,什麼是前端和後端,什麼是http,什麼是資料庫,網站的數據都存儲在哪?
當然不怕枯燥的話從C語言開始學起更佳,相比於C語言這種學習了半載一年還不一定有什麼成果的玩意,直接用工具按照教程來達到目的會容易且有趣的多,但學習C語言在很多的時候,往往能夠學習到C語言之外的東西,對程序的運行,內存的分配與管理,數據結構甚至是編程的書寫習慣,都有非常大的好處,可以說,C語言學會後再學習其它大部分的語言都會快得多。
③ 黑客編程書籍推薦
黑客教程和編程教程是兩回事
黑客現在一般有兩種:
一種是什麼都不懂,就知道用別人編輯好的工具掃描
然後入侵
一切工具都是別人的,他只是個使用者
這種黑客沒有任何水平可言
無誇張的說,這種人什麼都不懂~~
但這種黑客門檻低,找個明白人十分鍾就能教會你……
基本的盜號和簡單的遠控都可以完成~~
菜鳥黑客入侵菜鳥用戶……菜vs菜……比的是誰更菜……
有很多菜鳥就學這種所謂的「黑客」
然後就到處大言不慚的說自己是黑客……
如果樓主想要學這種黑客,不需要編程知識~~0基礎就可以輕易上手~~~
還有就是真正的黑客技術……
具體有哪些內容我也沒有深入研究
最基礎的注入、溢出攻擊、漏洞分析、密碼破解等等應該是必備技能……
這種黑客……
編程必須要學……
但僅僅編程知識是滿足不了技術要求的……
有更多的知識去學……太繁雜太龐大,而且極其枯燥……
需要極大的毅力和決心
編程語言C和匯編必學
還有網路協議和資料庫知識等等~~
其他的我也說不好了
慢慢學吧~~
真正的黑客技術沒有速成~
要准備好下幾年的功夫……
④ 黑客請進入 asp網站被注入 請解釋一下代碼 並給予防範代碼
這是日誌文件?如果是日誌文件的話你的網站應該沒有問題,
從代碼來看,只是有人嘗試進行注入,但沒有成功,因為他在嘗試對bindex.asp
onesix.asp
vip_index.asp
等文件進行注入'但沒有成功,因為要是成功的話他不會對這么多個文件嘗試而且只嘗試一次,這證明他都失敗了,如果成功的話他會只對一個文件進行住入,所以你的網站沒有問題,
呼,強烈要求加分
⑤ 電腦黑客如何編寫程序
額?黑客只有一小部分人自己琢磨著編程序(例如小榕工作室,專門編黑客軟體),大部分都是用現有軟體,例如流光啦之類的,還有一些直接用黑客文件,例如『黑洞』軟體、『灰鴿子』軟體這些可以直接種植到肉雞中的文件
⑥ 如何防範SQL注入漏洞及檢測
以下是OMG我為大家收集整理的文章,希望對大家有所幫助。
SQL注入(SQLInjection)漏洞攻擊是目前網上最流行最熱門的黑客腳本攻擊方法之一,那什麼是SQL注入漏洞攻擊呢?它是指黑客利用一些Web應用程序(如:網站、論壇、留言本、文章發布系統等)中某些存在不安全代碼或SQL語句不縝密的頁面,精心構造SQL語句,把非法的SQL語句指令轉譯到系統實際SQL語句中並執行它,以獲取用戶名、口令等敏感信息,從而達到控制主機伺服器的攻擊方法。
1. SQL注入漏洞攻擊原理
1. 1 SQL注入漏洞攻擊實現原理
SQL(Structured Query Language)是一種用來和資料庫交互的語言文本。SQL注入的攻擊原理就是攻擊者通過Web應用程序利用SQL語句或字元串將非法的數據插入到伺服器端資料庫中,獲取資料庫的管理用戶許可權,然後將資料庫管理用戶許可權提升至操作系統管理用戶許可權,控制伺服器操作系統,獲取重要信息及機密文件。
SQL注入漏洞攻擊主要是通過藉助於HDSI、NBSI和Domain等SQL注入漏洞掃描工具掃描出Web頁面中存在的SQL注入漏洞,從而定位SQL注入點,通過執行非法的SQL語句或字元串達到入侵者想要的操作。下面以一段身份驗證的.NET代碼為例,說明一下SQL 注入攻擊的實現方法。
SqlConnectionnwConn = new SqlConnection((string)ConfigurationSettings.AppSettings["DBconnStrings"]); string queryStr = "SELECT userid,userpwd, username,type FROM users where userid='" + Txtusername.Text +"'";
DataSet userSet = new DataSet();
SqlDataAdapter userAdapter = newSqlDataAdapter(queryStr, nwConn);
userAdapter.Fill(userSet, "Users");
Session["UserID"] =Txtusername.Text.ToString();
Session["type"] =type.Text.ToString();
Response.Redirect("/Myweb/admin/login.aspx");
從上面的代碼中可以看出,程序在與資料庫建立連接得到用戶數據之後,直接將username的值通過session傳給login.aspx,沒有進行任何的過濾和處理措施, 直接用來構造SQL 語句, 其危險系數是非常高的, 攻擊者只要根據SQL 語句的編寫規則就可以繞過身份驗證,從而達到入侵的目的。
1. 2 SQL注入漏洞攻擊分析
SQL注入可以說是一種漏洞,也可以說是一種攻擊。當程序中的變數處理不當,沒有對用戶提交的數據類型進行校驗,編寫不安全的代碼,構造非法的SQL語句或字元串,都可能產生這個漏洞。
例如Web系統有一個login頁面,這個login頁面控制著用戶是否有權訪問,要求用戶輸入一個用戶名和口令,連接資料庫的語句為:
“select * from users where username = 'username' andpassword = 'password'”
攻擊者輸入用戶名為aa or 1=1口令為1234 or 1=1之類的內容。我們可以看出實際上攻擊者並不知道真正的用戶名、口令,該內容提交給伺服器之後,伺服器執行攻擊者構造出的SQL命令,但由於攻擊者輸入的內容非常特殊,所以最後得到的SQL命令變成:
“select * from users where username = 'aa' or 1=1 andpassword = '1234' or 1=1”
伺服器執行查詢或存儲過程,將用戶輸入的身份信息和資料庫users表中真實的身份信息進行核對,由於SQL命令實際上已被修改,存在永遠成立的1=1條件,因此已經不能真正驗證用戶身份,所以系統會錯誤地授權攻擊者訪問。
SQL 注入是通過目標伺服器的80埠進行的,是正常的Web訪問,防火牆不會對這種攻擊發出警告或攔截。當Web伺服器以普通用戶的身份訪問資料庫時,利用SQL注入漏洞就可能進行創建、刪除、修改資料庫中所有數據的非法操作。而當資料庫以管理用戶許可權的身份進行登錄時,就可能控制整個資料庫伺服器。
SQL注入的方法很多,在以手動方式進行攻擊時需要構造各種各樣的SQL語句,所以一般攻擊者需要豐富的經驗和耐心,才能繞過檢測和處理,提交語句,從而獲得想要的有用信息。這個過程需要花費很多的時間,如果以這種手動方式進行SQL注入漏洞攻擊,許多存在SQL注入漏洞的ASP、JSP、PHP、JAVA等網站就會安全很多了,不是漏洞不存在了,而是手動入侵者需要編程基礎,但現在攻擊者可以利用一些現成的黑客工具來輔助SQL注入漏洞攻擊,加快入侵的速度,使SQL注入變得輕而易舉。
由於SQL注入漏洞攻擊利用的是通用的SQL語法,使得這種攻擊具有廣泛性。理論上說,對於所有基於SQL語言的資料庫管理系統都是有效的,包括MSSQLServer、Oracle、DB2、Sybase和MySQL等。當然,各種系統自身的SQL擴展功能會有所不同,因此最終的攻擊代碼可能不盡相同。
1. 3 SQL注入漏洞攻擊過程
(1)繞過身份驗證
如一個login界面,需要輸入用戶名和口令,然後Post到另一個頁面,進行身份驗證,因此攻擊者只需在用戶名和口令的輸入框中都輸入aa or’1’=’1’的內容,那麼攻擊者就可以通過欺騙的驗證方式而直接進入下一個頁面,並擁有和正常登錄用戶一樣的全部特權。原因是什麼呢? 我們比較一下正常用戶登錄和攻擊者登錄時的兩種SQL語句:
1)正常用戶(如用戶名為admin,口令為1234567) :
SQL= " selectfrom users where username = ’admin’and password= ’1234567’ ";
2)攻擊者(用戶名和口令都為aa or’1’=’1’) :
SQL= " select * from users where username='aa or’1’=’1’'and password = ' aa or’1’=’1’'";
可以看到由and連接的兩個條件都被一個永遠成立的1=1所代替,執行的結果為true,資料庫會認為條件恆成立,會返回一個true,讓攻擊者以合法身份登錄進入下一個頁面。
(2)執行非法操作
如一個查詢頁面select1.asp? id=1,編程人員原本設計意圖是顯示id為1的查詢信息,而攻擊者利用程序中沒有對id內容進行檢查的機制,插入自己的代碼。
從select1.asp中摘錄一段關鍵代碼:
SQL= " select *from photo where photoid= 'id'";
可以看到,id沒有進行任何的處理,直接構成SQL語句並執行,而攻擊者在知道該系統資料庫中表名及欄位名的情況下,利用SQL語句特性(分號是將兩句SQL 語句分開的符號),直接向資料庫Tuser表中添加記錄:
select1.asp? id= 1;Insertinto Tuser (username,password,type) values ('hack','1234567','管理員'),然後攻擊者就可以直接用hack進行登錄了。通過這樣的方法,攻擊者還可以對系統做任何的事情,包括添加、刪除、修改系統資源的操作。
(3)執行系統命令
如果Web主機使用MSSQL資料庫管理系統,那麼攻擊者就可以用到xp_cmdshell這個擴展存儲過程,xp_cmdshell是一個非常有用的擴展存儲過程,用於執行系統命令,比如dir、net等,攻擊者可以根據程序的不同,提交不同的語句:
execmaster.dbo.xp_cmdshell " dir "; exec master.dbo.xp_cmdshell" net user hack 1234567 /add ";
execmaster.dbo.xp_cmdshell " net localgroup administrators hack /add ";
這樣就可以向Web主機系統中成功添加了一個管理員帳戶。
2. SQL注入漏洞攻擊的檢測方式及方法
2. 1檢測方式
SQL注入漏洞攻擊檢測分為入侵前的檢測和入侵後的檢測。入侵前的檢測,可以通過手工方式,也可以使用SQL注入漏洞掃描工具軟體。檢測的目的是為預防SQL注入漏洞攻擊,而對於SQL注入漏洞攻擊後的檢測,主要是針對審計日誌的查看,SQL注入漏洞攻擊成功後,會在Web Service和資料庫的審計日誌中留下“痕跡”。
2. 2檢測方法
(1)動態SQL檢查
動態的SQL語句是一個進行資料庫查詢的強大的工具,但把它和用戶輸入混合在一起就使SQL注入成為了可能。將動態的SQL語句替換成預編譯的SQL或者存儲過程對大多數應用程序是可行的。預編譯的SQL或者存儲過程可以將用戶的輸入作為參數而不是命令來執行,這樣就限制了入侵者的行動。當然,它不適用於存儲過程中利用用戶輸入來生成SQL命令的情況。在這種情況下,用戶輸入的SQL命令仍可能得到執行,資料庫仍然存在SQL注入漏洞攻擊的危險。
(2)有效性校驗
如果一個輸入框只可能包括數字,那麼要通過驗證確保用戶輸入的都是數字。如果可以接受字母,檢查是不是存在不可接受的字元,那就需要設置字元串檢查功能。確保應用程序要檢查以下字元:分號、等號、破折號、括弧以及SQL關鍵字。
(3)數據表檢查
使用SQL注入漏洞攻擊工具軟體進行SQL注入漏洞攻擊後,都會在資料庫中生成一些臨時表。通過查看資料庫中最近新建的表的結構和內容,可以判斷是否曾經發生過SQL注入漏洞攻擊。
(4)審計日誌檢查
在Web伺服器中如果啟用了審計日誌功能,則Web Service審計日誌會記錄訪問者的IP地址、訪問時間、訪問文件等信息,SQL注入漏洞攻擊往往會大量訪問某一個頁面文件(存在SQL注入點的動態網頁),審計日誌文件會急劇增加,通過查看審計日誌文件的大小以及審計日誌文件中的內容,可以判斷是否發生過SQL注入漏洞攻擊事件;另外還可以通過查看資料庫審計日誌,查詢某個時間段是否有非法的插入、修改、刪除操作。
(5)其他
SQL注入漏洞攻擊成功後,入侵者往往會添加特權用戶(如:administrator、root、sa等)、開放非法的遠程服務以及安裝木馬後門程序等,可以通過查看用戶帳戶列表、遠程服務開啟情況、系統最近日期產生的一些文件等信息來判斷是否發生過入侵。
3. SQL注入漏洞防範措施
SQL注入漏洞攻擊的防範方法有很多種,現階段總結起來有以下方法:
(1)數據有效性校驗。如果一個輸入框只可能包括數字,那麼要通過校驗確保用戶輸入的都是數字。如果可以接受字母,那就要檢查是不是存在不可接受的字元,最好的方法是增加字元復雜度自動驗證功能。確保應用程序要檢查以下字元:分號、等號、破折號、括弧以及SQL關鍵字。另外限製表單數據輸入和查詢字元串輸入的長度也是一個好方法。如果用戶的登錄名最多隻有10個字元,那麼不要認可表單中輸入10個以上的字元,這將大大增加攻擊者在SQL命令中插入有害代碼的難度。
(2)封裝數據信息。對客戶端提交的數據進行封裝,不要將數據直接存入cookie中,方法就是在編程的代碼中,插入session、if、try、else,這樣可以有效地防止攻擊者獲取cookie中的重要信息。
(3)去除代碼中的敏感信息。將在代碼中存在的用戶名、口令信息等敏感欄位刪除,替換成輸入框。
SQL=" select from users where username = ’admin’and password= ’1234567’ "
如:這樣顯然會暴露管理員的用戶名、口令信息。可以將其修改成:
SQL= " select * from users where username='" +Txtuser.Text + "' and userpwd='" + Textpwd.Text + "'"
這樣就安全了很多,入侵者也是不會輕易的就獲取到用戶名、口令信息。
(4)替換或刪除單引號。使用雙引號替換掉所有用戶輸入的單引號,這個簡單的預防措施將在很大程度上預防SQL注入漏洞攻擊,單引號時常會無法約束插入數據的Value,可能給予輸入者不必要的許可權。用雙引號替換掉單引號可以使大部分SQL注入漏洞攻擊失敗。 如:
“select* from users where username='" + admin + "' and userpwd='" + 1234567+ "'”
顯然會得到與
“select * from users where username='admin' and password= '1234567'”
相同的結果。
(5)指定錯誤返回頁面。攻擊者有時從客戶端嘗試提交有害代碼和攻擊字元串,根據Web Service給出的錯誤提示信息來收集程序及伺服器的信息,從而獲取想得到的資料。應在Web Service中指定一個不包含任何信息的錯誤提示頁面。
(6)限制SQL字元串連接的配置文件。使用SQL變數,因為變數不是可以執行的腳本,即在Web頁面中將連接資料庫的SQL字元串替換成指定的Value,然後將Web.config文件進行加密,拒絕訪問。
(7)設置Web目錄的訪問許可權。將虛擬站點的文件目錄禁止遊客用戶(如:Guest用戶等)訪問,將User用戶許可權修改成只讀許可權,切勿將管理許可權的用戶添加到訪問列表。
(8)最小服務原則。Web伺服器應以最小許可權進行配置,只提供Web服務,這樣可以有效地阻止系統的危險命令,如ftp、cmd、vbscript等。
(9)鑒別信息加密存儲。將保存在資料庫users表中的用戶名、口令信息以密文形式保存,也可以對users表進行加密處理,這樣可以大大增加對鑒別信息訪問的安全級別。
(10)用戶許可權分離。應盡可能的禁止或刪除資料庫中sa許可權用戶的訪問,對不同的資料庫劃分不同的用戶許可權,這樣不同的用戶只能對授權給自己的資料庫執行查詢、插入、更新、刪除操作,就可以防止不同用戶對非授權的資料庫進行訪問。
4. 結束語
SQL注入漏洞攻擊在網上非常普遍,許多ASP、PHP論壇和文章管理系統、下載系統以及新聞系統都存在這個漏洞。造成SQL注入漏洞攻擊的主要原因是開發人員在系統開發的過程中編程不規范,沒有形成良好的編程習慣,問題的解決只有依賴於規范編程。此外,也可以使用現有的SQL注入漏洞掃描器對整個網站中的關鍵代碼進行掃描,查找網站頁面中存在的SQL注入點。對於有問題的頁面,可以及時刪除或更新。本文通過對SQL注入漏洞攻擊的方法、原理以及攻擊實施過程進行了闡述和總結,並給出了一些常見的SQL注入漏洞攻擊防範的方法。
⑦ 黑客編程的介紹
黑客編程又名網路安全編程,是指採用常規的編程技術,編寫網路安全、黑客攻防類的程序、工具。1在網路安全越來越受到各行業關注的時候,黑客編程、網路安全編程已經受到越來越多人的重視,很多企業和公司也開始儲備相關的專業人才。
⑧ 黑客攻防實戰編程的前 言
《黑客攻防實戰入門》、《黑客攻防實戰詳解》和《黑客攻防實戰進階》這3本書自面世以來,得到了廣大讀者的肯定與好評。其銷量一直排在同類書籍的前列,筆者在此深表感謝。與此同時,應廣大讀者的要求,筆者針對當前黑客編程領域的熱點及難點問題,撰寫了這本《黑客攻防實戰編程》一書。本書一如既往地保持著前3本書的「授之以魚,不如授之以漁」的風格,向讀者介紹黑客入侵及防禦相關編程技術的思考方法和思維方式,而不是單單介紹編程語法。本書是筆者通過多年的研究與實踐,在把握國內外安全領域研究的熱點及難點的基礎之上,進行歸納總結所完成的一本黑客編程入門及提高書籍,這一點是本書區別於其他同類書籍的根本之處。
關於黑客
長期以來,由於諸多方面的因素,「黑客」這個字眼變得十分敏感。不同的人群對黑客也存在不同的理解,甚至沒有人願意承認自己是黑客。有些人認為,黑客是一群狂熱的技術愛好者,他們無限度地追求技術的完美;有些人認為,黑客只是一群擁有技術,但思想簡單的毛頭小夥子;還有些人認為黑客是不應該存在的,他們是網路的破壞者。這里,我們沒有必要對這個問題爭論不休,也無須為黑客加上一個標準的定義,但從客觀存在的事實來看,黑客這類群體往往存在以下共同點。
(1)強烈的技術渴望與完美主義:驅動他們成長的是對技術的無限渴望,獲得技術的提高才是他們最終的任務。
(2)強烈的責任感:只有強烈的責任感才能使他們不會走向歧途,責任感告訴他們不要在任何媒體上公布成功入侵的伺服器;不要對其入侵的伺服器進行任何破壞;在發現系統漏洞後要立即通知官方對該漏洞採取必要的修補措施。在官方補丁沒有公布之前,絕對不要大范圍地公開漏洞利用代碼。一方面,黑客入侵可能造成網路的暫時癱瘓;另一方面,黑客也是整個網路的建設者,他們不知疲倦地尋找網路大廈的缺陷,使得網路大廈的根基更加穩固。
為什麼寫作本書
不容樂觀的事實是,一部分人歪曲了黑客的本質,被不良動機所驅使而進行入侵活動,威脅網路的健康發展。對於我國來說,形勢尤為嚴峻。我國信息化建設遲於美國等發達國家,信息安全技術水平也相對落後。在幾次黑客大戰中,國內網站的弱口令及漏洞比比皆是。這種現狀實在令人擔憂,值得深思和反省,從中也可以看出傳統的計算機網路教學層次是遠遠不夠的。可能出於安全等其他角度的考慮,傳統教學往往只注重表面上的應用,而避開一些敏感的技術。設想一下,如果一個網站的管理員只學會架構網站,卻不關心如何入侵自己的網站,那麼如何對自己網站的缺陷了如指掌?如何能夠及時地獲知最新漏洞的描述而提前做好抵禦?如果以上都做不到,那就更不要談日常的系統更新、維護和打補丁了。然而國內精通入侵的網管又有多少呢?長期以來,國內網管的潛意識里都認為「入侵」是個不光彩的勾當,甚至嗤之以鼻。隨著信息化程度越來越高,信息技術與生活的聯系越來越緊密,可以上網的電子設備逐年增加,電腦、PDA、手機,甚至家電。可以想像10年後,如果不了解入侵者的手段來採取必要的防禦措施,將要被入侵的設備不會僅僅限於電腦,也許還包括手機、家電和汽車等。因此在信息技術如此發達,溝通方式日益豐富和復雜的今天,我們不僅要學會如何正確使用網路,而且還需要學會如何防禦自己的網路被他人入侵,這也正是筆者寫作本書的初衷。
本書主要內容
作為《黑客攻防實戰入門》、《黑客攻防實戰詳解》和《黑客攻防實戰進階》的提高篇,本書以黑客「攻」、「防」的視角,針對目前國內外安全研究的熱點和難點問題進行研究,涵蓋了Web入侵腳本、病毒、木馬、網馬、加密解密、Shellcode、漏洞溢出滲透,以及漏洞挖掘等相關領域的程序開發研究。
本書分為內容獨立的7章,讀者可以根據實際需求有選擇跳躍式閱讀,各章的主要內容如下。
第1章「Web入侵腳本編程」從伺服器搭建開始,介紹目前網路上最為猖獗的「SQL注入」和「跨站腳本攻擊」入侵手段、原理與編程技術,以及防護手段。
第2章「病毒原理及代碼解析」在總結計算機病毒發展歷史、病毒種類及病毒命名方式之後,詳細地介紹計算機病毒原理,並對病毒源代碼進行了全面的剖析。
第3章「木馬網馬程序分析」針對木馬及網馬的源代碼進行解析、總結了其工作原理、啟動方式、隱藏與防殺等相關技術。
第4章「軟體加密與解密」介紹序列號保護、軟體加密狗、時間限制及Key文件保護等目前常見軟體的加密方法,並分析注冊機等軟體的解密原理,以及跟蹤調試與反跟蹤調試技術。
第5章「shellcode原理與編寫」介紹了棧溢出、堆溢出等程序溢出原理,分析了PE文件結構,以及如何針對已知漏洞編寫Shellcode。
第6章「漏洞溢出程序分析與設計」詳細介紹了緩沖區溢出原理、類Unix、Windows及遠程Windows程序溢出方法等滲透方法,並介紹一款自動化滲透測試工具Metasploit及其使用方法。
第7章「漏洞挖掘與Fuzzing程序設計」介紹一種行之有效的自動化漏洞挖掘技術「Fuzzing」,進而介紹如何挖掘已知系統中所存在的漏洞。
另外,本書中所使用的源代碼及動畫教程等相關資源下載,
本書的姊妹書籍
本書的姊妹書籍有《黑客攻防實戰入門(第2版)》、《黑客攻防實戰詳解》和《黑客攻防實戰進階》3本,在本書推出之後,這4本書便形成了一個由淺入深完整的知識體系。幾乎涵蓋了黑客安全領域由入門到專家所必需掌握的所有的知識與技術,以供不同層次的讀者學習。
(1)《黑客攻防實戰入門》:踏入網路安全之門,初窺黑客攻防實戰技巧。
(2)《黑客攻防實戰詳解》:透析網路安全內幕,詳解黑客攻防體系。
(3)《黑客攻防實戰進階》:深入網路安全技術,進階黑客攻防專家。
(4)《黑客攻防實戰編程》:把握網路安全方向,實戰黑客攻防編程。
致謝
感謝張毅編輯在我還是學生時代時就接受了我的《黑客攻防實戰入門》樣稿,才使得這么多年我都有機會和信心將自己的經驗通過電子工業出版社分享給廣大讀者朋友。
感謝畢寧編輯長年來的指導與支持,並推薦給我大量的朋友與學習機會。才使得我能夠陸續撰寫《黑客攻防實戰入門(第2版)》、《黑客攻防實戰詳解》、《黑客攻防實戰進階》和《黑客攻防實戰編程》這4本書。
感謝孫學瑛老師和黃愛萍助理的指導,以及為本書的出版所付出辛勤勞動的所有朋友。
感謝qixu.liu在技術方面給與我的支持。
感謝長期以來支持我的讀者朋友和網友們。
需要聲明的是,本書的目的絕不是為那些懷有不良動機的人提供支持,也不承擔因為技術被濫用所產生的連帶責任。本書的目的在於最大限度地喚起大家的網路安全意識,正視我們的網路世界所面臨的一場危機並採取相應的行動。
鄧 吉
⑨ 黑客需要掌握哪些編程語言
必學:C\C++ 計算機運行原理 socket TCP/IP 協議 HTPP協議。匯編。
WIN32程序:包括以上語言,Windows結構。WINDOWS API( 這個可以不提)。
伺服器器入侵:包括以上語言,還有ASP,PHP,HTML.JAVASCRIPT Unix / Liunx系統結構.
剩下的事情就是你的思維了和想法了。
其實木馬也不是那麼難以想像。 利用DLL注入和加殼來躲開殺軟、必要的時候需要驅動載入。Socket來遠程式控制制,注冊表渲染文件。U盤感染, 當然還有很多的事情。這么說是說不完的,這就要靠你的聰明才智了。
⑩ 黑客游戲SQL注入這一關怎麼破
網路:
SQL注入攻擊是你需要擔心的事情,不管你用什麼web編程技術,再說所有的web框架都需要擔心這個的。你需要遵循幾條非常基本的規則:
1)在構造動態SQL語句時,一定要使用類安全(type-safe)的參數加碼機制。大多數的數據API,包括ADO和ADO. NET,有這樣的支持,允許你指定所提供的參數的確切類型(譬如,字元串,整數,日期等),可以保證這些參數被恰當地escaped/encoded了,來避免黑客利用它們。一定要從始到終地使用這些特性。
例如,在ADO. NET里對動態SQL,你可以象下面這樣重寫上述的語句,使之安全:
Dim SSN as String = Request.QueryString("SSN")
Dim cmd As new SqlCommand("SELECT au_lname,au_fname FROM authors WHERE au_id = @au_id")
Dim param = new SqlParameter("au_id",SqlDbType.VarChar)
param.Value = SSN
cmd.Parameters.Add(param)
這將防止有人試圖偷偷注入另外的SQL表達式(因為ADO. NET知道對au_id的字元串值進行加碼),以及避免其他數據問題(譬如不正確地轉換數值類型等)。注意,VS 2005內置的TableAdapter/DataSet設計器自動使用這個機制,ASP. NET 2.0數據源控制項也是如此。
一個常見的錯誤知覺(misperception)是,假如你使用了存儲過程或ORM,你就完全不受SQL注入攻擊之害了。這是不正確的,你還是需要確定在給存儲過程傳遞數據時你很謹慎,或在用ORM來定製一個查詢時,你的做法是安全的。
2) 在部署你的應用前,始終要做安全審評(security review)。建立一個正式的安全過程(formal security process),在每次你做更新時,對所有的編碼做審評。後面一點特別重要。很多次我聽說開發隊伍在正式上線(going live)前會做很詳細的安全審評,然後在幾周或幾個月之後他們做一些很小的更新時,他們會跳過安全審評這關,推說,「就是一個小小的更新,我們以後再做編碼審評好了」。請始終堅持做安全審評。
3) 千萬別把敏感性數據在資料庫里以明文存放。我個人的意見是,密碼應該總是在單向(one-way)hashed過後再存放,我甚至不喜歡將它們在加密後存放。在默認設置下,ASP. NET 2.0 Membership API 自動為你這么做,還同時實現了安全的SALT 隨機化行為(SALT randomization behavior)。如果你決定建立自己的成員資料庫,我建議你查看一下我們在這里發表的我們自己的Membership provider的源碼。同時也確定對你的資料庫里的信用卡和其他的私有數據進行了加密。這樣即使你的資料庫被人入侵(compromised)了的話,起碼你的客戶的私有數據不會被人利用。
4)確認你編寫了自動化的單元測試,來特別校驗你的數據訪問層和應用程序不受SQL注入攻擊。這么做是非常重要的,有助於捕捉住(catch)「就是一個小小的更新,所有不會有安全問題」的情形帶來的疏忽,來提供額外的安全層以避免偶然地引進壞的安全缺陷到你的應用里去。
5)鎖定你的資料庫的安全,只給訪問資料庫的web應用功能所需的最低的許可權。如果web應用不需要訪問某些表,那麼確認它沒有訪問這些表的許可權。如果web應用只需要只讀的許可權從你的account payables表來生成報表,那麼確認你禁止它對此表的 insert/update/delete 的許可權。
6)很多新手從網上SQL通用防注入系統的程序,在需要防範注入的頁面頭部用 來防止別人進行手動注入測試(。
可是如果通過SQL注入分析器就可輕松跳過防注入系統並自動分析其注入點。然後只需要幾分鍾,你的管理員及密碼就會被分析出來。
7)對於注入分析器的防範,筆者通過實驗,發現了一種簡單有效的防範方法。首先我們要知道SQL注入分析器是如何工作的。在操作過程中,發現並不是沖著「admin」管理員去的,而是沖著許可權(如flag=1)去的。這樣一來,無論你的管理員怎麼變都無法逃過檢測。
第三步:既然無法逃過檢測,那我們就做兩個,一個是普通的管理員,一個是防止注入的,為什麼這么說呢?筆者想,如果找一個許可權最大的製造假象,吸引的檢測,而這個里的內容是大於千字以上的中文字元,就會迫使對這個進行分析的時候進入全負荷狀態甚至資源耗盡而死機。下面我們就來修改資料庫吧。
⒈對表結構進行修改。將管理員的欄位的數據類型進行修改,文本型改成最大欄位255(其實也夠了,如果還想做得再大點,可以選擇備注型),密碼的欄位也進行相同設置。
⒉對表進行修改。設置管理員許可權的放在ID1,並輸入大量中文字元(最好大於100個字)。
⒊把真正的管理員密碼放在ID2後的任何一個位置(如放在ID549上)。
由於SQL注入攻擊針對的是應用開發過程中的編程不嚴密,因而對於絕大多數防火牆來說,這種攻擊是「合法」的。問題的解決只有依賴於完善編程。專門針對SQL注入攻擊的工具較少,Wpoison對於用asp,php進行的開發有一定幫助。