1.2 SqlMap支持的五種不同注入模式
- Boolean-based blind:sqlmap替換或附加到HTTP請求中的受影響參數,包含
SELECT子語句的語法有效的SQL語句字符串,或用戶要檢索其輸出的任何其他SQL語句。對于每個HTTP響應,通過在HTTP響應標頭/正文與原始請求之間進行比較,該工具可以逐字符推斷注入的語句的輸出。或者,用戶可以提供字符串或正則表達式以匹配True頁面。在sqlmap中實現的用于執行此技術的二等分算法能夠獲取最多七個HTTP請求的輸出每個字符。如果輸出不在明文純字符集內,則sqlmap將采用更大范圍的算法來檢測輸出。 - Time-based blind:sqlmap替換或附加到HTTP請求中的受影響參數,該語法有效的SQL語句字符串包含查詢,該查詢將使后端DBMS保留一定的秒數。對于每個HTTP響應,通過在HTTP響應時間和原始請求之間進行比較,該工具可以逐字符推斷注入的語句的輸出。像基于布爾的技術一樣,應用二等分算法。
- Error-based:sqlmap替換或附加到受影響的參數特定于數據庫的錯誤消息引發語句,并解析HTTP響應標頭和正文,以查找包含已注入的預定義字符鏈和其中的子查詢語句輸出的DBMS錯誤消息。僅當Web應用程序已配置為公開后端數據庫管理系統錯誤消息時,此技術才有效。
- UNION query-based:sqlmap將一個語法有效的SQL語句附加到受影響的參數,該語句以開頭
UNION ALL SELECT。當Web應用程序頁面SELECT在for循環或類似情況下直接傳遞語句的輸出時,此技術有效,以便查詢輸出的每一行都打印在頁面內容上。sqlmap還能夠利用部分(單項)UNION查詢SQL注入漏洞,該漏洞在語句的輸出未在for構造中循環而僅顯示查詢輸出的第一項時發生。聯合查詢分為內聯(inner join)、左聯(left outer join)、右聯(right outer join)和全聯(full outer join) - Stacked queries:sqlmap測試Web應用程序是否支持堆疊查詢,然后在支持的情況下將HTTP請求后的分號(
;)附加到受影響的參數上,后跟SQL語句以被執行。此技術對于運行除SELECT(例如)數據定義或數據操作語句以外的SQL語句很有用,這可能導致文件系統的讀寫訪問和操作系統命令的執行,具體取決于底層的后端數據庫管理系統和會話用戶特權。
SqlMap中文版使用教程