如何防范SQL注入攻擊_第1頁
如何防范SQL注入攻擊_第2頁
如何防范SQL注入攻擊_第3頁
如何防范SQL注入攻擊_第4頁
如何防范SQL注入攻擊_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、F面看看一些常用例測試的注入語句。如何防范注入文章分類軟件開發(fā)管理關(guān)鍵字注入前一篇是關(guān)于編程防止注入的文章,那么這篇就是從測試來進(jìn)行測試注入。首先,看看注入攻擊能分為以下三種類型:數(shù)據(jù)經(jīng)由代碼注入的通道取出,這是最直接的一種攻擊,通過注入獲取的信息直接反映到應(yīng)用程序的頁面上;:數(shù)據(jù)通過不同于代碼注入的方法獲得譬如通過郵件等推理:這種攻擊時(shí)說并沒有真正的數(shù)據(jù)傳輸,但攻擊者可以通過發(fā)送特定的請求,重組返回的結(jié)果從而得到一些信息。不論是哪種注入,攻擊者都需要構(gòu)造一個(gè)語法正確的查詢,如果應(yīng)用程序?qū)σ粋€(gè)不正確的查詢返回了一個(gè)錯(cuò)誤消息,那么就很容易重新構(gòu)造初始的查詢語句的邏輯,進(jìn)而也就能更容易的進(jìn)行注入;

2、如果應(yīng)用程序隱藏了錯(cuò)誤信息,那么攻擊者就必須對查詢邏輯進(jìn)行反向工程,即我們所謂的“盲注入”黑盒測試及其示例:這個(gè)測試的第一步是理解我們的應(yīng)用程序在什么時(shí)候需要訪問數(shù)據(jù)庫,典型的需要方法數(shù)據(jù)庫的時(shí)機(jī)是:認(rèn)證表單:輸入用戶名和密碼以檢查是否有權(quán)限搜索引擎:提交字符串以從數(shù)據(jù)庫中獲取相應(yīng)的記錄電子商務(wù)站點(diǎn):獲取某類商品的價(jià)格等信息作為測試人員,我們需要列對所有輸入域的值可能用于查詢的字段做一個(gè)表單,包括那些請求的隱含字段,然后截取查詢語句并產(chǎn)生錯(cuò)誤信息。第一個(gè)測試往往是用一個(gè)單引號“”或者分號“;”,前者在中是字符串終結(jié)符,如果應(yīng)用程序沒有過濾,則會(huì)產(chǎn)生一條錯(cuò)誤信息;后者在中是一條語句的終結(jié)符,同樣

3、如果沒有過濾,也會(huì)產(chǎn)生錯(cuò)誤信息。同樣可用于測試的還有“”以及中的一些諸如“AND”的關(guān)鍵字,通常很常見的一種測試是在要求輸入為數(shù)字的輸入框中輸入字符串。通過上面的測試輸入返回的錯(cuò)誤信息能夠讓我們知道很多數(shù)據(jù)庫的信息。這時(shí)候就需要“盲目注入”了。注意,我們需要多所有可能存在的注入漏洞的輸入域進(jìn)行測試,并且在,每個(gè)測試用例時(shí)只變化一個(gè)域的值,從而才能找到真正存在漏洞的輸入域。引用我們針對上面的語句分析,發(fā)現(xiàn)如果用下面的測試數(shù)據(jù)就能夠進(jìn)行注入了引用看看整個(gè)查詢語句變成:引用假設(shè)參數(shù)值是通過方法傳遞到服務(wù)器的,且域名為那么我們的訪問請求就是:引用對上面的語句作簡單分析后我們就知道由于該語句永遠(yuǎn)為真,所

4、以肯定會(huì)返回一些數(shù)據(jù),在這種情況下實(shí)際上并未驗(yàn)證用戶名和密碼,并且在某些系統(tǒng)中,用戶表的第一行記錄是管理員,那這樣造成的后果則更為嚴(yán)重。另外一個(gè)查詢的例子如下引用在這個(gè)例子中,存在兩個(gè)問題,一個(gè)是括號的用法,還有一個(gè)是哈希函數(shù)的用法。對于第一個(gè)問題,我們很容找出缺少的右括號解決,對于第二個(gè)問題,我們可以想辦法使第二個(gè)條件失效。我們在查詢語句的最后加上一個(gè)注釋符以表示后面的都是注釋,常見的注釋起始符是(在中是),也就是說,我們用如下的用戶名和密碼:引用F面看看一些常用例測試的注入語句。那么整條語句就變?yōu)?引用那么看看引用請求就變?yōu)?F面看看一些常用例測試的注入語句。F面看看一些常用例測試的注入語

5、句。查詢注入測試可以連接查詢,從而從其他表中得還有一種測試是利用的,利用到信息,假設(shè)如下查詢:引用然后我們設(shè)置的值為:引用那么整體的查詢就變?yōu)橐蔑@示這就能得到所有信用卡用戶的信息。盲目注入測試在上面我們提到過盲注入,即它意味著對于某個(gè)操作我們得不到任何信息,通常這是由于程序員已經(jīng)編寫了特定的出錯(cuò)返回頁面,從而隱藏了數(shù)據(jù)庫結(jié)構(gòu)的信息。但利用推理方法,有時(shí)候我們能夠恢復(fù)特定字段的值。這種方法通常采用一組對服務(wù)器的布爾查詢,依據(jù)返回的結(jié)果來推斷結(jié)果的含義。仍然延續(xù)上面的有一個(gè)參數(shù)名為,那么我們輸入以下請求:引用顯然由于語法錯(cuò)誤,我們會(huì)得到一個(gè)預(yù)先定義好的出錯(cuò)頁面,假設(shè)服務(wù)器上的查詢語句為引用假設(shè)我

6、們想要的帶哦用戶名字段的值,那么通過一些函數(shù),我們就可以逐字符的讀取用戶名的值。在這里我們使用以下的函數(shù):引用我們定義為:引用那么最終的查詢語句為:引用那么,如果在數(shù)據(jù)庫中有用戶名的第一字符的碼為的話,那么我們就能得到一個(gè)真值,那么就繼續(xù)尋找該用戶名的下一個(gè)字符;如果沒有的話,那么我們就增猜測第一個(gè)字符的碼為的用戶名,這樣反復(fù)下去就能判斷出合法的用戶名。不過這樣盲目注入會(huì)要求使用大量的嘗試,有一些自動(dòng)化的工具能夠幫我們實(shí)現(xiàn),就是這樣的一種工具,對數(shù)據(jù)庫進(jìn)行訪問請求。存儲(chǔ)過程注入如果在使用存儲(chǔ)過程不當(dāng)?shù)臅r(shí)候,會(huì)造成一定的注入漏洞。以下面的存儲(chǔ)過程為例:引用passworarcharsDeclar

7、esqlstringarcharSetsqlstring=Select1fromuserswhereusername=+username+andpassword=+passwordexec(sqlstring)Go測試的輸入如下:引用anyusernameor1=1anypassword如果程序沒有對輸入進(jìn)行驗(yàn)證,那么上面的語句就返回?cái)?shù)據(jù)庫中的一條記錄我們再看下面的一條:引用Createprocedureget_reportcolumnamelistvarchar(7900)AsDeclaresqlstringvarchar(8000)Setsqlstring=Select+columnamelist+fromRep

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論