4.4 SQL注入 (2)_第1頁
4.4 SQL注入 (2)_第2頁
4.4 SQL注入 (2)_第3頁
4.4 SQL注入 (2)_第4頁
4.4 SQL注入 (2)_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、02SQL注入類型03SQL注入防范01SQL注入攻擊分析 SQL注入攻擊分析例如,某個網(wǎng)站的登錄驗證的例如,某個網(wǎng)站的登錄驗證的SQLSQL查詢代碼為:查詢代碼為:v strSQL = SELECT strSQL = SELECT * * FROM users WHERE (name = FROM users WHERE (name = + userName + ) and (pw = + passWord +);+ userName + ) and (pw = + passWord +); 攻擊攻擊者在填寫用戶名密碼表單時惡意填入如下信息:者在填寫用戶名密碼表單時惡意填入如下信息:v us

2、erName = 1 OR 1=1; userName = 1 OR 1=1; 和和passWord = 1 OR passWord = 1 OR 1=1;1=1;v 這時,將導(dǎo)致原本的這時,將導(dǎo)致原本的SQLSQL字符串被修改。因為代碼字符串被修改。因為代碼strSQL = SELECT strSQL = SELECT * * FROM users WHERE (name = 1 FROM users WHERE (name = 1 OR 1=1) and (pw = 1 OR 1=1);OR 1=1) and (pw = 1 OR 1=1);在在WHEREWHERE語句后面的條件判斷結(jié)果都

3、會變成語句后面的條件判斷結(jié)果都會變成TrueTrue,也就是實際,也就是實際上運行的上運行的SQLSQL命令會變成了命令會變成了strSQL = SELECT strSQL = SELECT * *FROM FROM users;users;,因此實現(xiàn)無賬號密碼,亦可登錄網(wǎng)站,因此實現(xiàn)無賬號密碼,亦可登錄網(wǎng)站。SQL注入類型(1 1)不正確的處理類型)不正確的處理類型v 如果一個用戶提供的字段并非一個強(qiáng)類型,或者沒有實施如果一個用戶提供的字段并非一個強(qiáng)類型,或者沒有實施類型強(qiáng)制,就會發(fā)生這種形式的攻擊。當(dāng)在一個類型強(qiáng)制,就會發(fā)生這種形式的攻擊。當(dāng)在一個SQLSQL語句語句中使用一個數(shù)字字段時,

4、如果程序員沒有檢查用戶輸入的中使用一個數(shù)字字段時,如果程序員沒有檢查用戶輸入的合法性(是否為數(shù)字型)就會發(fā)生這種攻擊。例如:合法性(是否為數(shù)字型)就會發(fā)生這種攻擊。例如:v statement := SELECT statement := SELECT * * FROM data WHERE id = + FROM data WHERE id = + a_variable + ;a_variable + ;v 從這個語句可以看出,作者希望從這個語句可以看出,作者希望a_variablea_variable是一個與是一個與“idid”字段有關(guān)的數(shù)字。不過,如果終端用戶選擇一個字符串,字段有關(guān)的數(shù)

5、字。不過,如果終端用戶選擇一個字符串,就繞過了對轉(zhuǎn)義字符的需要。例如,將就繞過了對轉(zhuǎn)義字符的需要。例如,將a_variablea_variable設(shè)置為:設(shè)置為:1;DROP TABLE users1;DROP TABLE users,它會將,它會將“usersusers”表從數(shù)據(jù)庫中刪表從數(shù)據(jù)庫中刪除,除,SQLSQL語句變成:語句變成:v SELECT SELECT * * FROM DATA WHERE id = 1;DROP TABLE users; FROM DATA WHERE id = 1;DROP TABLE users;SQL注入類型(2 2)數(shù)據(jù)庫服務(wù)器中的漏洞)數(shù)據(jù)庫服務(wù)

6、器中的漏洞v 有時,數(shù)據(jù)庫服務(wù)器軟件中也存在著漏洞,如有時,數(shù)據(jù)庫服務(wù)器軟件中也存在著漏洞,如MYSQLMYSQL服務(wù)服務(wù)器中器中mysql_real_escape_stringmysql_real_escape_string()()v 函數(shù)漏洞。這種漏洞允許一個攻擊者根據(jù)錯誤的統(tǒng)一字符函數(shù)漏洞。這種漏洞允許一個攻擊者根據(jù)錯誤的統(tǒng)一字符編碼執(zhí)行一次成功的編碼執(zhí)行一次成功的SQLSQL注入式攻擊。在數(shù)據(jù)庫字符集設(shè)注入式攻擊。在數(shù)據(jù)庫字符集設(shè)為為GBKGBK時是可能被繞過的時是可能被繞過的。SQL注入類型(3 3)盲目)盲目SQLSQL注入式攻擊注入式攻擊v 當(dāng)一個當(dāng)一個WebWeb應(yīng)用程序易于遭

7、受攻擊而其結(jié)果對攻擊者卻不應(yīng)用程序易于遭受攻擊而其結(jié)果對攻擊者卻不見時,就會發(fā)生所謂的盲目見時,就會發(fā)生所謂的盲目SQLSQL注入式攻擊。有漏洞的網(wǎng)注入式攻擊。有漏洞的網(wǎng)頁可能并不會顯示數(shù)據(jù),而是根據(jù)注入到合法語句中的邏頁可能并不會顯示數(shù)據(jù),而是根據(jù)注入到合法語句中的邏輯語句的結(jié)果顯示不同的內(nèi)容。這種攻擊相當(dāng)耗時,因為輯語句的結(jié)果顯示不同的內(nèi)容。這種攻擊相當(dāng)耗時,因為必須為每一個獲得的字節(jié)而精心構(gòu)造一個新的語句。但是必須為每一個獲得的字節(jié)而精心構(gòu)造一個新的語句。但是一旦漏洞的位置和目標(biāo)信息的位置被確立以后,一種稱為一旦漏洞的位置和目標(biāo)信息的位置被確立以后,一種稱為AbsintheAbsinth

8、e的工具就可以使這種攻擊自動化。的工具就可以使這種攻擊自動化。SQL注入類型(4 4)條件響應(yīng))條件響應(yīng) 有有一種一種SQLSQL注入迫使數(shù)據(jù)庫在一個普通的應(yīng)用程序屏幕上注入迫使數(shù)據(jù)庫在一個普通的應(yīng)用程序屏幕上計算一個邏輯語句的值:計算一個邏輯語句的值:SELECT booktitle FROM booklist SELECT booktitle FROM booklist WHERE bookId = OOk14cd AND 1=1WHERE bookId = OOk14cd AND 1=1這會導(dǎo)致一個標(biāo)準(zhǔn)的面面,而語句:這會導(dǎo)致一個標(biāo)準(zhǔn)的面面,而語句:SELECT booktitle SE

9、LECT booktitle FROM booklist WHERE bookId = OOk14cd AND 1=2FROM booklist WHERE bookId = OOk14cd AND 1=2。在頁。在頁面易于受到面易于受到SQLSQL注入式攻擊時,它有可能給出一個不同的結(jié)注入式攻擊時,它有可能給出一個不同的結(jié)果。如此這般的一次注入將會證明盲目的果。如此這般的一次注入將會證明盲目的SQLSQL注入是可能的,注入是可能的,它會使攻擊者根據(jù)另外一個表中的某字段內(nèi)容設(shè)計可以評判它會使攻擊者根據(jù)另外一個表中的某字段內(nèi)容設(shè)計可以評判真?zhèn)蔚恼Z句。真?zhèn)蔚恼Z句。SQL注入類型(5 5)條件性差錯

10、)條件性差錯如果如果WHEREWHERE語句為真,這種類型的盲目語句為真,這種類型的盲目SQLSQL注入會迫使數(shù)據(jù)庫注入會迫使數(shù)據(jù)庫評判一個引起錯誤的語句,從而導(dǎo)致一個評判一個引起錯誤的語句,從而導(dǎo)致一個SQLSQL錯誤。例如:錯誤。例如:SELECT 1/0 FROM users WHERE username=RalphSELECT 1/0 FROM users WHERE username=Ralph。顯然,。顯然,如果用戶如果用戶RalphRalph存在的話,被零除將導(dǎo)致錯誤。存在的話,被零除將導(dǎo)致錯誤。(6 6)時間延誤)時間延誤時間延誤是一種盲目的時間延誤是一種盲目的SQLSQL注入

11、,根據(jù)所注入的邏輯,它可注入,根據(jù)所注入的邏輯,它可以導(dǎo)致以導(dǎo)致SQLSQL引擎執(zhí)行一個長隊列或者是一個時間延誤語句。引擎執(zhí)行一個長隊列或者是一個時間延誤語句。攻擊者可以衡量頁面加載的時間,從而決定所注入的語句是攻擊者可以衡量頁面加載的時間,從而決定所注入的語句是否為真。否為真。 SQL注入防范 在設(shè)計應(yīng)用程序時,完全使用參數(shù)化查詢在設(shè)計應(yīng)用程序時,完全使用參數(shù)化查詢(Parameterized QueryParameterized Query)來設(shè)計數(shù)據(jù)訪問功能。)來設(shè)計數(shù)據(jù)訪問功能。 在組合在組合SQLSQL字符串時,針對所傳入的參數(shù)作字符字符串時,針對所傳入的參數(shù)作字符取代(將單引號字符取代為連續(xù)取代(將單引號字符取代為連續(xù)2 2個單引號字符)。個單引號字符)。 如果使用如果使用PHPPHP開發(fā)網(wǎng)頁程序的話,可以打開開發(fā)網(wǎng)頁程序的話,可以打開PHPPHP的魔術(shù)引號(的魔術(shù)引號(Magic quoteMagic quote)功能(自動將所有的)功能(自動將所有的網(wǎng)頁傳入?yún)?shù),將單引號字符取代為連續(xù)網(wǎng)頁傳入?yún)?shù),將單引號字符取代為連續(xù)2 2個單引號個單引號字符)。字符)。 SQL注入防

溫馨提示

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

評論

0/150

提交評論