Sqlmap學習筆記(三)

2022-03-30 10:42:50 字數 3598 閱讀 7962

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.基於聯合查詢的檢測 取決於開發者是否使用迴圈語句,如果使用,才可以查出多條資...