sqlmap效能優化設定
sqlmap設定持久http連線,sqlmap預設是一次連線成功後馬上關閉。
http報文中相當於connection: close(一次連線馬上關閉)
要掃瞄站點的url比較多時,這樣比較耗費效能,所以需要將http連線持久化來提高掃瞄效能。
http報文相當於connection: keep-alive
如果在sqlmap中設定的話,只需要加上--keep-alive引數
sqlmap -u "目標url" --keep-alive
sqlmap設定不接收http body(響應體)部分
body部分內容太大會增加http響應延遲,如果只關心響應頭部分內容,則可以設定空連線
設定引數--null-connection
sqlmap -u "目標url" --null-connection
sqlmap設定多執行緒
sqlmap預設是單執行緒訪問的,掃瞄的順序序列執行,必須要等到上一次請求成功後才會執行後面的掃瞄,這樣以來,掃瞄的效率就會低很多。因為網路連線是耗時操作,等待服務端響應的這段時間,sqlmap就什麼都做不了,本地的cpu、記憶體資源得不到有利的利用。而多個執行緒並行處理請求則可以有效的利用本地系統資源。
但是設定執行緒太多也不好,因為執行緒越多,服務端的壓力越大,可能會導致響應速度大幅度降低甚至出現丟包現象,導致請求無響應。所以sqlmap最大只能設定10個執行緒。
通過設定--thread引數設定執行緒數量
sqlmap -u "目標url" --thread=10
sqlmap設定**輸出
用於檢索並統計字元出現的次數
引數:--predict-output
與--thread相互衝突,它們不能同時被設定,比如同時指定--predict-output和--thread
sqlmap -u "" --predict-output --thread=3
將會報以下錯誤
[23:10:15] [critical] switch '--predict-output' is incompatible with option '--threads' and switch '-o'
通過-o可以開啟所有效能優化的引數
通過--dbms可以指定要掃瞄的資料庫型別,預設判斷是否是其它資料庫
sqlmap -u "目標站點" --dbms=mysql
sqlmap指定位置注入
指定引數進行掃瞄,而不是掃瞄所有引數,這樣可以避免浪費時間到非注入點引數上,從而提高掃瞄效率。比如掃瞄以下url,已知submit是靜態引數,id是動態的,那麼在掃瞄的時候只需要指定id就行了,指定多個引數時用雙引號包起來,並以逗號分隔。也可以指定http請求頭中的引數,如user-agent
sqlmap -u "" -p id
設定--skip跳過指定引數掃瞄,和-p作用相反,它用來跳過需要掃瞄的引數。如果不想掃瞄http頭的referfer和host引數
sqlmap -u "" --skip "referfer,host"
設定--param-exclude不對包含具體內容引數的請求進行探測,如不對包含token和session引數的請求進行探測
sqlmap -u "" --param-exclude="token,session"
設定--skip-static掃瞄時忽略非動態引數
指定uri位置進行注入
當注入點在uri上時,除非手動將注入點指向uri上,否則sqlmap不會對uri路徑執行任何自動測試,必須要在掃瞄時在uri上加星號(*)來指定這些注入點
sqlmap -u ""
自動確認掃瞄
有時候,在掃瞄的時候,sqlmap會等待確認(y/n),需要手動確認才能繼續掃瞄
通過設定--batch來忽略等待確認,自動回應y來進行掃瞄
sqlmap -u "目標url" --batch
指定作業系統掃瞄
使用--os引數設定要探測作業系統的版本
sqlmap -u "目標url" --os windows
或者
sqlmap -u "目標url" --os linux
關閉自動轉換
sqlmap預設情況下所有引數會被轉成字串型別,並在null值情況下使用空格字串代替,這樣做是為了防止意外錯誤發生。如果想關閉自動轉換的話,使用--no-cast
sqlmap -u "目標url" --no-cast
關閉字元轉義
設定--no-escape可以關閉字元轉義,在特殊情況下,關閉字元轉義可以增加注入的成功率
sqlmap自定義注入負載位置
--prefix:注入點引數的固定字首
--suffix:注入點引數的固定字尾
例如:在對目標url注入時會自動在payload前後兩邊加上『(』和『)』
sqlmap -u "" -p id --prefix="(" --suffix=")"
執行測試的風險等級
--risk:1~3,預設為1,風險值和大量使用了基於時間的sql注入測試,值3也增加了基於or的sql注入測試。
sqlmap -u "目標url" --risk 3
頁面比較引數
--string:包含指定的字串,則返回true
--not-string:與--string互斥,包含指定的字串時,返回false
--regexp:通過正則返回匹配的字串,如果包含則返回true
--code:如果是返回的是預期的狀態碼,則返回true
內容比較引數
--text-only:頁面內容包含指定字串,如是則返回true
--titles:頁面title標籤中包含指定文字,如果包含則返回true,否則反之
sqlmap學習筆記
環境 centos7 python2.7.5 sqlmap1.1.8.2 dev sqlmap檔案目錄 執行命名格式 python sqlmap.py h 常用命令 通過幫助資訊可以,找到需要的命令 h 顯示基本幫助資訊 hh 顯示高階幫助資訊 u url,url url 目標url cookie ...
SQLMAP學習筆記(二)
常用引數 u 注入點 f 指紋判別資料庫型別 b 獲取資料庫版本資訊 p 指定可測試的引數 page 1 id 2 p page,id d 指定資料庫名 t 指定表名 c 指定字段 s 儲存注入過程到乙個檔案,還可中斷,下次恢復在注入 儲存 s xx.log 恢復 s xx.log resume c...
Kali學習筆記44 SQLMAP
sqlmap漏洞檢測技術 1.基於布林的盲注檢測 and 1 1 and 1 2等 2.基於時間的盲注檢測 and select from select sleep 20 a 3.基於錯誤的盲注檢測 比如輸入單引號報錯 4.基於聯合查詢的檢測 取決於開發者是否使用迴圈語句,如果使用,才可以查出多條資...