標籤:安全 白帽子
第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是有可能的。
代碼注入:
js:eval()
jsp:include
CRLF注入:
就是斷行符號(CR, ASCII13, \r) 換行(LF, ASCII10, \n)。
換行在有的ASCII碼錶也用newline(簡nl)來進行表示,這裡的lf是line feed的概念,意思是一樣的。
這兩個ACSII字元不會在螢幕有任何輸出,但在Windows中廣泛使用來標識一行的結束。而在Linux/UNIX系統中只有分行符號。
CR和LF組合在一起即。
這中“CRLF”攻擊可以在東方紅項目中測試一下。
對於防禦這種注入攻擊,最好的辦法就是“資料與代碼分離”
本文出自 “夢朝思夕” 部落格,請務必保留此出處http://qiangmzsx.blog.51cto.com/2052549/1859551
《白帽子講WEB安全》學習筆記之第7章 注入攻擊