《白帽子講WEB安全》學習筆記之第7章注入攻擊

科技小能手發表於2017-11-12

第7章 注入攻擊

SQL注入的兩個條件:1,使用者可以控制輸入;2,原本執行的SQL語句並接了使用者輸入的資料。

7.1 sql注入

SQL注入,就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令,比如先前的很多影視網站洩露VIP會員密碼大多就是通過WEB表單遞交查詢字元暴出的,這類表單特別容易受到SQL注入式攻擊.

盲注:

盲注是在伺服器沒錯誤回顯時完成的注入攻擊。伺服器沒有錯誤回顯,對於攻擊者而言缺少了非常重要的“調式資訊”,所以攻擊者需要找一個一個方法來驗證注入的SQL是否已經執行。

盲注是根據多給條件進行判斷,如果頁面沒有出錯則表示存在注入點。

7.2 資料庫攻擊技巧

在網站中使用儲存過程並不常見,雖然使用儲存過程可以提高執行效率。但是會出現移植問題。

資料庫字元需要統一編碼,最好為UTF-8

7.3 正確地防禦sql注入

防禦方法:

q  使用預編譯語句

q  使用儲存過程

q  檢查資料型別

q  使用安全函式

7.4 其他注入攻擊

XML注入

Xml注入是通過改寫xml的資料內容來實現。XML通常用於儲存資料,如果使用者提供的資料是以XML的方式進行儲存,那麼對攻擊者來說,注入額外的、攻擊者可能不能正常控制的XML是有可能的。

程式碼注入:

jseval()

jsp:include

CRLF注入:

就是回車(CR, ASCII13,
換行(LF, ASCII10,
)

換行在有的ASCII碼錶也用newline(簡nl)來進行表示,這裡的lfline feed的概念,意思是一樣的。

這兩個ACSII字元不會在螢幕有任何輸出,但在Windows中廣泛使用來標識一行的結束。而在Linux/UNIX系統中只有換行符。

CRLF組合在一起即。

這中“CRLF”攻擊可以在東方紅專案中測試一下。

對於防禦這種注入攻擊,最好的辦法就是“資料與程式碼分離”


本文轉自 夢朝思夕 51CTO部落格,原文連結:http://blog.51cto.com/qiangmzsx/1859551


相關文章