安裝
- python 環(huán)境
- 下載地址http://sqlmap.org/
特點
- 完全支持MySQL酗洒、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access乐纸、IBM DB2、SQLite摇予、Firebird汽绢、Sybase、SAP MaxDB趾盐、HSQLDB和Informix等多種數(shù)據(jù)庫管理系統(tǒng)庶喜。
- 完全支持布爾型盲注、時間型盲注救鲤、基于錯誤信息的注入久窟、聯(lián)合查詢注入和堆查詢注入。
- 在數(shù)據(jù)庫證書本缠、IP地址斥扛、端口和數(shù)據(jù)庫名等條件允許的情況下支持不通過SQL注入點而直接連接數(shù)據(jù)庫。
- 支持枚舉用戶丹锹、密碼稀颁、哈希、權(quán)限楣黍、角色匾灶、數(shù)據(jù)庫、數(shù)據(jù)表和列租漂。
- 支持自動識別密碼哈希格式并通過字典破解密碼哈希阶女。
- 支持完全地下載某個數(shù)據(jù)庫中的某個表颊糜,也可以只下載某個表中的某幾列,甚至只下載某一列中的部分數(shù)據(jù)秃踩,這完全取決于用戶的選擇衬鱼。
- 支持在數(shù)據(jù)庫管理系統(tǒng)中搜索指定的數(shù)據(jù)庫名、表名或列名
sqlmap注入介紹
所謂SQL注入,就是通過把SQL命令插入到web表單提交或輸入域名或頁面請求的查詢字符串, 最終達到欺騙服務器執(zhí)行惡意的SQL命令憔杨。具體來說,它是利用現(xiàn)有應用程序,將SQL命令注入 到后臺數(shù)據(jù)庫引擎執(zhí)行的能力,它可以通過在web表單中輸入SQL語句得到一個存在安全漏洞 的網(wǎng)站上的數(shù)據(jù)庫,而不是按照設計者意圖去執(zhí)行SQL語句
常用命令
參數(shù)-v
輸出級別
Sqlmap的輸出信息按從簡到繁共分為7個級別依次為0鸟赫、1、2消别、3抛蚤、4、5和6寻狂。使用參數(shù)-v 來 指定某個等級霉颠,如使用參數(shù)-v 6來指定輸出級別為6。默認輸出級別為1荆虱。
- 0:只顯示Python的tracebacks信息、錯誤信息[ERROR]和關(guān)鍵信息[CRITICAL]
- 1:同時顯示普通信息[INFO]和警告信息[WARNING]
- 2:同時顯示調(diào)試信息[DEBUG]
- 3:同時顯示注入使用的攻擊荷載
- 4:同時顯示HTTP請求頭
- 5:同時顯示HTTP響應頭
- 6:同時顯示HTTP響應體
參數(shù)-b
,--banner
檢索數(shù)據(jù)庫信息
大多數(shù)的數(shù)據(jù)庫系統(tǒng)都有一個函數(shù)可以返回數(shù)據(jù)庫的版本號朽们,通常這個函數(shù)是version()或者變量@@version這主要取決與是什么數(shù)據(jù)庫怀读。
參數(shù)--dbs
列舉數(shù)據(jù)庫
當前用戶有權(quán)限讀取包含所有數(shù)據(jù)庫列表信息的表中的時候,即可列出所有的數(shù)據(jù)庫骑脱。
列舉數(shù)據(jù)庫表
參數(shù)-d
直連數(shù)據(jù)庫
- 服務型數(shù)據(jù)庫-MySQL,Oracle
python3 sqlmap.py -d "mysql://用戶名:密碼@地址:端口/數(shù)據(jù)庫名字" -f --banner --dbs --users
python sqlmap.py -d "mysql://root:toor@localhost:3306/mysql" -f --banner --dbs --users
- 文件型數(shù)據(jù)庫-SQLite
參數(shù)-u
,--url
指定目標URL獲取
URL格式:http(s)://targetur\[:port\]/
python sqlmap.py -u "http://127.0.0.1:3306?id=1"
參數(shù)-x
讀取xml站點地圖
為便于搜索引擎收錄菜枷,許多網(wǎng)站專門為搜索引擎生成了xml格式的站點地圖
參數(shù)-m
掃描文本文件中給定的多個目標
從多行文本格式文件讀取多個目標,對多個目標進行探測
sqlmap -m target.txt
www.target1.com/vuln1.php?q=foobar
www.target2.com/vuln2.asp?id=1
www.target3.com/vuln3/id/1*
參數(shù)-r
從文件加載HTTP請求
可以將一個HTTP請求保存在文件中,然后使用參數(shù)
sqlmap -m target.txt
POST /vuln.php HTTP/1.1
Host: www.target.com
User-Agent: Mozilla/4.0
id=1
參數(shù)-l
日志文件分析
可以直接把Burp proxy或者WebScarab proxy中的日志直接倒出來交給sqlmap來一個一個檢測是否有注入叁丧。
從文本中獲取多個目標掃描
參數(shù)-c
配置文件讀取
從配置文件sqlmap.conf中讀取目標探測
參數(shù)-g
Google搜索引擎結(jié)果作為目標url處理
sqlmap可以測試注入Google的搜索結(jié)果中的GET參數(shù)(只獲取前100個結(jié)果)啤誊。
python sqlmap.py -g "inurl:\".php?id=1\""
參數(shù)--method
強制使用給定的HTTP請求方法
一般來說,Sqlmap能自動判斷出是使用GET方法還是POST方法拥娄,但在某些情況下需要的可能是PUT 等很少見的方法蚊锹,此時就需要用參數(shù)--method來指定方法。
python sqlmap.py -u "http://127.0.0.1:3306" --method=GET
參數(shù)--data
表單提交數(shù)據(jù)
默認情況下,用于執(zhí)行HTTP請求的HTTP方法是GET,但是可以通過提供在POST請求中發(fā)送的數(shù)據(jù)隱式 的將其改為POST稚瘾。這些數(shù)據(jù)作為參數(shù),被用于SQL注入檢測
python sqlmap.py -u "http://127.0.0.1:3306" --method=POST --data="username=123&password=456"
設置cookie
當你使用--cookie參數(shù)時牡昆,當返回一個Set-Cookie頭的時候,sqlmap會詢問你用哪個cookie來繼續(xù)接下來的請求摊欠。當--level
的參數(shù)設定為2或者2以上的時候丢烘,sqlmap會嘗試注入Cookie參數(shù)。
--cookie #設置cookie
--cookie-del # 設置cookie分隔符
--load-cookies # 通過帶有cookie的Netscape/wget格式的文件進行探測注入
--drop-set-cookie # 如果響應中使用set-cookie設置了新的cookie,sqlmap會在之后的探測中使用它些椒,可以用這個參數(shù)忽略新cookie播瞳。
--cookie="PHPSESSID=a8d127efc693b45"
--cookie-del="&"