對于任意一個url,如:http://192.168.136.131/sqlmap/mysql/get_int.php?id=1
sqlmap會:
- 判斷可注入的參數
- 判斷可以用那種SQL注入技術來注入
- 識別出哪種數據庫
- 根據用戶選擇,讀取哪些數據
sqlmap支持的注入模式
- 基于布爾的盲注,根據返回頁面判斷條件真假的注入。
- 基于時間的盲注,即不能根據頁面返回內容判斷任何信息,用條件語句查看時間延遲語句是否執行(即頁面返回時間是否增加)來判斷。
- 基于報錯的注入,即頁面會返回錯誤信息,或者把注入的語句和結果直接返回在頁面中。
- 聯合查詢注入,可以使用union的情況下的注入。
- 堆查詢注入,可以同時執行多條語句的執行時注入。
Sqlmap支持的數據庫有:
MySQL,Oracle,PostgreSQL,MSSQL,SQLite, Access
-
可以提供一個簡單的URL,Burp或WebScarab請求日志文件,文本文檔中的完整http請求或者Google的搜索,匹配出結果頁面,也可以自己定義一個正則來判斷那個地址去測試。
測試GET參數,POST參數,HTTP Cookie參數,HTTP User-Agent頭和HTTP Referer頭來確認是否有SQL注入,它也可以指定用逗號分隔的列表的具體參數來測試。
可以設定HTTP(S)請求的并發數,來提高盲注時的效率。
常用參數
-v (VERBOSE)
對一個點進行嘗試判斷以及讀取數據。
共有七個等級,默認為1:
0:只顯示python錯誤以及嚴重的信息。
1:同時顯示基本信息和警告信息(默認)
2:同時顯示debug信息。
3:同時顯示注入的payload(最好看payload測試等級)
4:同時顯示HTTP請求。
5:同時顯示HTTP響應頭。
6:同時顯示HTTP響應頁面。
-d (director)
直接連接數據庫。
-u (URL)
從Burp或者WebScarab代理中獲取日志。
格式:sqlmap -u "http://www.baidu.com"
-l (LIST)
直接把Burp或Webscabe中解析目標,并將目標直接導出到Sqlmap來檢測是否存在注入。從文本中獲取多個目標掃描。
-level (執行測試等級)
-g
測試Google搜索結果中的GET參數(Top100結果)
--data
用于拆分字符,此參數用于POST方式提交,sqlmap會像檢測GET參數一樣檢測POST的參數。
--cookie,--load-cookies,--drop-set-cookie
主要用在這兩方面:
1.web應用需要登陸的時候。
2.你想要在這些頭參數中測試SQL注入。
-p
sqlmap默認測試所有的GET和POST參數,當--level的值大于等于2的時候也會測試HTTP Cookie頭的值,當大于等于3的時候也會測試User-Agent和HTTP Referer頭的值。但是你可以手動用-p參數設置想要測試的參數。例如: -p "id,user-anget"
當你使用--level的值很大但是有個別參數不想測試的時候可以使用--skip參數。
--os
默認情況下sqlmap會自動的探測數據庫服務器系統,支持的系統有:Linux、Windows。
指定無效的大數字
--dbs
當前用戶有權限讀取所有數據看列表信息的表中的時候,即可列出一個特定數據的所有表。
--dump,-C,-T,-D,--start
如果當前管理員有權限讀取數據庫其中的一個表,那么就能獲取整個表中的所有內容。
-T,-D參數指定想要獲取哪個庫的哪個表,不適用-D參數是,默認使用當前庫。
--common-tables
暴力破解表名,當--tables無法獲取到數據庫表時,使用該參數破解,同理用于破解列名。
當:
1、MySQL數據庫版本小于5.0,沒有information_schema表。
2、數據庫是Microssoft Access,系統表MSysObjects是不可讀的(默認)。
3、當前用戶沒有權限讀取系統中保存數據結構的表的權限。
--file-read
從服務器中讀取文件。當數據庫為MySQL,PostgreSQL, MSSQL時,并當前用戶有權使用特定的函數(以下情況均在該條件下),讀取文件可以是文本也可以是二進制文件。
--file-write,--file-dest
把文件上傳到數據庫服務器中。
--os-cmd,--os-shell
運行任意操作系統命令。包含用戶自定義函數sys_exec()和sys_eval()等。
如有錯誤,請私信我修改,謝謝。