請求
http數據
參數:--data
此參數是把數據以POST方式提交,sqlmap會像檢測GET參數一樣檢測POST的參數。
例子:
python sqlmap.py -u "http://www.target.com/vuln.php" --data="id=1" -f --banner --dbs --users
參數拆分字符
參數:--param-del
當GET或POST的數據需要用其他字符分割測試參數的時候需要用到此參數。
例子:
python sqlmap.py -u "http://www.target.com/vuln.php" --data="query=foobar;id=1" --param-del=";" -f --banner --dbs --users
HTTP cookie頭
參數:--cookie,--load-cookies,--drop-set-cookie
這個參數在以下兩個方面很有用:
1、web應用需要登陸的時候。
2、你想要在這些頭參數中測試SQL注入時。
可以通過抓包把cookie獲取到,複製出來,然後加到--cookie參數裏。
在HTTP請求中,遇到Set-Cookie的話,sqlmap會自動獲取並且在以後的請求中加入,並且會嘗試SQL注入。
如果你不想接受Set-Cookie可以使用--drop-set-cookie參數來拒接。
當你使用--cookie參數時,當返回一個Set-Cookie頭的時候,sqlmap會詢問你用哪個cookie來繼續接下來的請求。當--level的參數設定爲2或者2以上的時候,sqlmap會嘗試注入Cookie參數。
HTTP User-Agent頭
參數:--user-agent,--random-agent
默認情況下sqlmap的HTTP請求頭中User-Agent值是:
sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org)
可以使用--user-anget參數來修改,同時也可以使用--random-agnet參數來隨機的從./txt/user-agents.txt中獲取。
當--level參數設定爲3或者3以上的時候,會嘗試對User-Angent進行注入。
HTTP Referer頭
參數:--referer
sqlmap可以在請求中僞造HTTP中的referer,當--level參數設定爲3或者3以上的時候會嘗試對referer注入。
額外的HTTP頭
參數:--headers
可以通過--headers參數來增加額外的http頭
HTTP認證保護
參數:--auth-type,--auth-cred
這些參數可以用來登陸HTTP的認證保護支持三種方式:
1、Basic
2、Digest
3、NTLM
例子:
python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/basic/get_int.php?id=1" --auth-type Basic --auth-cred "testuser:testpass"
HTTP協議的證書認證
參數:--auth-cert
當Web服務器需要客戶端證書進行身份驗證時,需要提供兩個文件:key_file,cert_file。
key_file是格式爲PEM文件,包含着你的私鑰,cert_file是格式爲PEM的連接文件。
HTTP(S)代理
參數:--proxy,--proxy-cred和--ignore-proxy
使用--proxy代理是格式爲:http://url:port。
當HTTP(S)代理需要認證是可以使用--proxy-cred參數:username:password。
--ignore-proxy拒絕使用本地局域網的HTTP(S)代理。
HTTP請求延遲
參數:--delay
可以設定兩個HTTP(S)請求間的延遲,設定爲0.5的時候是半秒,默認是沒有延遲的。
設定超時時間
參數:--timeout
可以設定一個HTTP(S)請求超過多久判定爲超時,10.5表示10.5秒,默認是30秒。
設定重試超時
參數:--retries
當HTTP(S)超時時,可以設定重新嘗試連接次數,默認是3次。
設定隨機改變的參數值
參數:--randomize
可以設定某一個參數值在每一次請求中隨機的變化,長度和類型會與提供的初始值一樣。
利用正則過濾目標網址
參數:--scope
例如:
python sqlmap.py -l burp.log --scope="(www)?\.target\.(com|net|org)"
避免過多的錯誤請求被屏蔽
參數:--safe-url,--safe-freq
有的web應用程序會在你多次訪問錯誤的請求時屏蔽掉你以後的所有請求,這樣在sqlmap進行探測或者注入的時候可能造成錯誤請求而觸發這個策略,導致以後無法進行。
繞過這個策略有兩種方式:
1、--safe-url:提供一個安全不錯誤的連接,每隔一段時間都會去訪問一下。
2、--safe-freq:提供一個安全不錯誤的連接,每次測試請求之後都會再訪問一邊安全連接。
關掉URL參數值編碼
參數:--skip-urlencode
根據參數位置,他的值默認將會被URL編碼,但是有些時候後端的web服務器不遵守RFC標準,只接受不經過URL編碼的值,這時候就需要用--skip-urlencode參數。
每次請求時候執行自定義的python代碼
參數:--eval
在有些時候,需要根據某個參數的變化,而修改另個一參數,才能形成正常的請求,這時可以用--eval參數在每次請求時根據所寫python代碼做完修改後請求。
例子:
python sqlmap.py -u "http://www.target.com/vuln.php?id=1&hash=c4ca4238a0b923820dcc509a6f75849b" --eval="import hashlib;hash=hashlib.md5(id).hexdigest()"
上面的請求就是每次請求時根據id參數值,做一次md5後作爲hash參數的值。