sqlmap簡介
sqlmap支持五種不同的注入模式:
- 1、基於布爾的盲注,即可以根據返回頁面判斷條件真假的注入。
- 2、基於時間的盲注,即不能根據頁面返回內容判斷任何信息,用條件語句查看時間延遲語句是否執行(即頁面返回時間是否增加)來判斷。
- 3、基於報錯注入,即頁面會返回錯誤信息,或者把注入的語句的結果直接返回在頁面中。
- 4、聯合查詢注入,可以使用union的情況下的注入。
- 5、堆查詢注入,可以同時執行多條語句的執行時的注入。
sqlmap支持的數據庫
MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB
語法
sqlmap -u "http://可能注入的某個提交參數的url"
這里的url要帶參數,如果是post要用--data=參數
注意的是nessus只能檢測到查詢鏈接的sql注入,不能檢測提交操作操作的sql注入。
cookie注入
登錄網頁后在瀏覽器url欄輸入 javascript:document.cookie或者在console欄中輸入document.cookie即可獲得cookie
sqlmap -u "http://可能注入的某個提交參數的url" --cookie="這次提交的cookie"
dvwa中測試
sqlmap -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit#" --cookie="security=low; PHPSESSID=1129umpqj3j5siclohbkmik7nu" --level 3
參數釋義
-u 即--url的縮寫,檢測指定的url
--level 代表掃描等級,范圍1~5。數值越大掃描越完整(默認為1)
--risk 范圍是1~3級,默認是1會測試大部分的測試語句,2會增加基於事件的測試語句,3會增加OR語句的SQL注入測試。
--dbms 指定數據庫(mysql之類的)
--data=DATA Data(id=1&parm2=two#) string to be sent through POST
--dump 把當前使用的數據庫導出為csv文件
--dump-all 把所有數據庫導出為csv文件
--batch 不再詢問選擇默認選項
--dbs 獲取所有數據庫
--current-db 當前使用的數據庫
--users 所有用戶
--current-user 數據庫使用賬戶
--is-dba 當前用戶權限(是否為root權限)
--passwords 數據庫賬戶與密碼
-D dvwa --tables 查看指定數據庫(例如:dvwa)的所有表
-D dvwa -T users --columns 查看指定數據庫指定表的所有字段
--random-agent 構造隨機user-agent
--time-sec=TIMESEC DBMS響應的延遲時間(默認為5秒)
執行完之后結果如下
顯示結果被記錄在/root/.sqlmap/output/127.0.0.1下面
log是注入的日志,target.txt是執行的sqlmap命令,session.sqlite可以用sqlitespy查看書庫內容
從文本文件中解析多url
參數:-m
參數“-u”一次只能指定一個URL,若有多個URL需要測試就顯得很不方便,我們可用將多個URL以一行一個的格式保存在文本文件中,然后使用參數“-m”,后跟該文本文件路徑,讓Sqlmap依次讀取文件中的URL作為攻擊目標。
如我們有文件url.txt,內容為:
www.target2.com/vuln2.asp?id=1
www.target3.com/vuln3/id/1
使用命令
sqlmap -m url.txt
從post數據包中注入
可以使用burpsuite或者temperdata等工具來抓取post包,用-r指定數據包
burpsuite抓包日志
點擊Project options -》Misc -》Proxy.Requests ,在彈出的框中輸入日志文件的名稱及后綴
正常使用burpsuite,這時抓包數據不僅顯示在軟件中還會存在於日志文件中,執行以下命令即可。
sqlmap -r "~\burpRequestProxy.txt"
然后可以用-p指定參數,用dbms指定數據庫 -p “username” –dbms mysql
kali中其他數據庫工具
bbqsql:BBQSQL是用Python編寫的一個盲目的SQL注入框架(盲注SQL)。在攻擊棘手的SQL注入漏洞時非常有用。BBQSQL也是一種半自動化工具,可以讓那些難以觸發SQL注入發現的用戶進行相當多的定制。UI界面
hexorbase:用來管理和破解數據庫登錄賬號及密碼
JSQL Injection:由JAVA開法的SQL自動化注入工具,它提供了數據庫查詢、后台爆破、文件讀取、Web shell、SQL Shell、文件上傳、暴力枚舉、編碼、批量注入測試等強大的功能,是一款非常不錯的工具,也是滲透測試人員的強大助手。它支持GET\POST注入,同時也可以進行HTTP頭注入。
mdb-sql:針對SQLServer的一款軟件。
oscanner:是一個用Java開發的Oracle評估框架。 它有一個基於插件的架構,並附帶了幾個的插件。
sidguesser:在Oracle中,SID是System IDentifier的縮寫。SID是一個數據庫的唯一標識符。當用戶希望遠程連接Oracle數據庫時,則需要知道SID、用戶名、密碼及服務器的IP地址。SidGuess就是一款根據字典爆破Oracle SID的工具。該工具的破解比較慢,每秒80-100個。該工具非常簡單,格式如下:sidguess -i 服務器IP -d SID字典文件
sqldict:針對SQL Server的密碼爆破工具
SQLite Database Browser:一個SQLite數據庫管理工具。
sqlninja:是利用以Microsoft SQL Server作為后端的Web應用程序中的SQL注入漏洞
sqlsus:一個開源的MySQL注入和接管工具,用Perl編寫。
tnscmd10g:向Oracle注入命令