SQLMAP,它是一個自動化的SQL注入工具,其主要功能是掃描,發現并利用給定的URL的SQL注入漏洞,目前支援的資料庫是MS-SQL,,MYSQL,ORACLE和POSTGRESQL。
SQLMAP采用四種獨特的SQL注入技術,分别是盲推理SQL注入,UNION查詢SQL注入,堆查詢和基于時間的SQL盲注入。其廣泛的功能和選項包括資料庫指紋,枚舉,資料庫提取,通路目标檔案系統,并在擷取完全操作權限時實行任意指令。
啟動Backtrack5,在shell裡進入/pentest/database/sqlmap路徑下
輸入./sqlmap.py即可使用sqlmap工具
我們以本地測試為例,簡單的說一下sqlmap工具的使用
啟動SQLMAP,對這個注入點進行初步的判斷和檢測,它的檢測機制在文章開頭也已經說明,啟動後,SQLMAP開始工作,并對給定的URL開始判斷,如下圖
<a href="http://blog.51cto.com/attachment/201310/105444106.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201310/105447181.png" target="_blank"></a>
我們看到猜解出來的資料庫的類型為MYSQL,同時也看到了SQLMAP的注入方法
然後我們可以判斷一下目前站點的資料庫列舉出來
<a href="http://blog.51cto.com/attachment/201310/105451851.jpg" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201310/105456116.jpg" target="_blank"></a>
我們看到有兩個資料庫,而我們實驗的是dvwa,是以猜測使用的是dvwa資料庫
然後我們查詢dvwa資料庫裡面有那些表
<a href="http://blog.51cto.com/attachment/201310/105500446.jpg" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201310/105503607.jpg" target="_blank"></a>
我們查到了兩個資料表
users表,顧名思義,應該存放着使用者的一些資訊,我們繼續查詢該資料表
<a href="http://blog.51cto.com/attachment/201310/105507406.jpg" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201310/105510870.jpg" target="_blank"></a>
在users表裡面我們看到了幾個字段,而這幾個字段有我們想要的資訊
user,passqord很關鍵,一般都是存放着賬戶和密碼的資料,我們繼續使用--
dump參數幫我們列舉猜解所有的字段資訊
<a href="http://blog.51cto.com/attachment/201310/105514116.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201310/105517504.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201310/105525652.jpg" target="_blank"></a>
我們看到,已經才解除了六個帳号的資訊,有使用者名和密碼,這個資料庫我被我們破解了,把所有的資訊複制下來,我們就相當于把該資料庫下載下傳了,所有的資訊都在我們手裡。
==============================================================================================================================================================
SQLMAP參數解釋
Options(選項):
--version顯示程式的版本号并退出
-h,--help顯示此幫助消息并退出
-vVERBOSE詳細級别:0-6(預設為1)
Target(目标):
以下至少需要設定其中一個選項,設定目标URL。
-dDIRECT直接連接配接到資料庫。
-uURL,--url=URL目标URL。
-lLIST從Burp或WebScarab代理的日志中解析目标。
-rREQUESTFILE從一個檔案中載入HTTP請求。
-gGOOGLEDORK處理Googledork的結果作為目标URL。
-cCONFIGFILE從INI配置檔案中加載選項。
Request(請求):
這些選項可以用來指定如何連接配接到目标URL。
--data=DATA通過POST發送的資料字元串
--cookie=COOKIEHTTPCookie頭
--cookie-urlencodeURL編碼生成的cookie注入
--drop-set-cookie忽略響應的Set-Cookie頭資訊
--user-agent=AGENT指定HTTPUser-Agent頭
--random-agent使用随機標明的HTTPUser-Agent頭
--referer=REFERER指定HTTPReferer頭
--headers=HEADERS換行分開,加入其他的HTTP頭
--auth-type=ATYPEHTTP身份驗證類型(基本,摘要或NTLM)(Basic,DigestorNTLM)
--auth-cred=ACREDHTTP身份驗證憑據(使用者名:密碼)
--auth-cert=ACERTHTTP認證證書(key_file,cert_file)
--proxy=PROXY使用HTTP代理連接配接到目标URL
--proxy-cred=PCREDHTTP代理身份驗證憑據(使用者名:密碼)
--ignore-proxy忽略系統預設的HTTP代理
--delay=DELAY在每個HTTP請求之間的延遲時間,機關為秒
--timeout=TIMEOUT等待連接配接逾時的時間(預設為30秒)
--retries=RETRIES連接配接逾時後重新連接配接的時間(預設3)
--scope=SCOPE從所提供的代理日志中過濾器目标的正規表達式
--safe-url=SAFURL在測試過程中經常通路的url位址
--safe-freq=SAFREQ兩次通路之間測試請求,給出安全的URL
Optimization(優化):
這些選項可用于優化SqlMap的性能。
-o開啟所有優化開關
--predict-output預測常見的查詢輸出
--keep-alive使用持久的HTTP(S)連接配接
--null-connection從沒有實際的HTTP響應體中檢索頁面長度
--threads=THREADS最大的HTTP(S)請求并發量(預設為1)
Injection(注入):
這些選項可以用來指定測試哪些參數,提供自定義的注入payloads和可選篡改腳本。
-pTESTPARAMETER可測試的參數(S)
--dbms=DBMS強制後端的DBMS為此值
--os=OS強制後端的DBMS作業系統為這個值
--prefix=PREFIX注入payload字元串字首
--suffix=SUFFIX注入payload字元串字尾
--tamper=TAMPER使用給定的腳本(S)篡改注入資料
Detection(檢測):
這些選項可以用來指定在SQL盲注時如何解析和比較HTTP響應頁面的内容。
--level=LEVEL執行測試的等級(1-5,預設為1)
--risk=RISK執行測試的風險(0-3,預設為1)
--string=STRING查詢時有效時在頁面比對字元串
--regexp=REGEXP查詢時有效時在頁面比對正規表達式
--text-only僅基于在文本内容比較網頁
Techniques(技巧):
這些選項可用于調整具體的SQL注入測試。
--technique=TECHSQL注入技術測試(預設BEUST)
--time-sec=TIMESECDBMS響應的延遲時間(預設為5秒)
--union-cols=UCOLS定列範圍用于測試UNION查詢注入
--union-char=UCHAR用于暴力猜解列數的字元
Fingerprint(指紋):
-f,--fingerprint執行檢查廣泛的DBMS版本指紋
Enumeration(枚舉):
這些選項可以用來列舉後端資料庫管理系統的資訊、表中的結構和資料。此外,您還可以運作您自己
的SQL語句。
-b,--banner檢索資料庫管理系統的辨別
--current-user檢索資料庫管理系統目前使用者
--current-db檢索資料庫管理系統目前資料庫
--is-dba檢測DBMS目前使用者是否DBA
--users枚舉資料庫管理系統使用者
--passwords枚舉資料庫管理系統使用者密碼哈希
--privileges枚舉資料庫管理系統使用者的權限
--roles枚舉資料庫管理系統使用者的角色
--dbs枚舉資料庫管理系統資料庫
--tables枚舉的DBMS資料庫中的表
--columns枚舉DBMS資料庫表列
--dump轉儲資料庫管理系統的資料庫中的表項
--dump-all轉儲所有的DBMS資料庫表中的條目
--search搜尋列(S),表(S)和/或資料庫名稱(S)
-DDB要進行枚舉的資料庫名
-TTBL要進行枚舉的資料庫表
-CCOL要進行枚舉的資料庫列
-UUSER用來進行枚舉的資料庫使用者
--exclude-sysdbs枚舉表時排除系統資料庫
--start=LIMITSTART第一個查詢輸出進入檢索
--stop=LIMITSTOP最後查詢的輸出進入檢索
--first=FIRSTCHAR第一個查詢輸出字的字元檢索
--last=LASTCHAR最後查詢的輸出字字元檢索
--sql-query=QUERY要執行的SQL語句
--sql-shell提示互動式SQL的shell
Bruteforce(蠻力):
這些選項可以被用來運作蠻力檢查。
--common-tables檢查存在共同表
--common-columns檢查存在共同列
User-definedfunctioninjection(使用者自定義函數注入):
這些選項可以用來建立使用者自定義函數。
--udf-inject注入使用者自定義函數
--shared-lib=SHLIB共享庫的本地路徑
Filesystemaccess(通路檔案系統):
這些選項可以被用來通路後端資料庫管理系統的底層檔案系統。
--file-read=RFILE從後端的資料庫管理系統檔案系統讀取檔案
--file-write=WFILE編輯後端的資料庫管理系統檔案系統上的本地檔案
--file-dest=DFILE後端的資料庫管理系統寫入檔案的絕對路徑
Operatingsystemaccess(作業系統通路):
這些選項可以用于通路後端資料庫管理系統的底層作業系統。
--os-cmd=OSCMD執行作業系統指令
--os-shell互動式的作業系統的shell
--os-pwn擷取一個OOBshell,meterpreter或VNC
--os-smbrelay一鍵擷取一個OOBshell,meterpreter或VNC
--os-bof存儲過程緩沖區溢出利用
--priv-esc資料庫程序使用者權限提升
--msf-path=MSFPATHMetasploitFramework本地的安裝路徑
--tmp-path=TMPPATH遠端臨時檔案目錄的絕對路徑
Windows系統資料庫通路:
這些選項可以被用來通路後端資料庫管理系統Windows系統資料庫。
--reg-read讀一個Windows系統資料庫項值
--reg-add寫一個Windows系統資料庫項值資料
--reg-del删除Windows系統資料庫鍵值
--reg-key=REGKEYWindows系統資料庫鍵
--reg-value=REGVALWindows系統資料庫項值
--reg-data=REGDATAWindows系統資料庫鍵值資料
--reg-type=REGTYPEWindows系統資料庫項值類型
General(一般):
這些選項可以用來設定一些一般的工作參數。
-tTRAFFICFILE記錄所有HTTP流量到一個文本檔案中
-sSESSIONFILE儲存和恢複檢索會話檔案的所有資料
--flush-session重新整理目前目标的會話檔案
--fresh-queries忽略在會話檔案中存儲的查詢結果
--eta顯示每個輸出的預計到達時間
--update更新SqlMap
--savefile儲存選項到INI配置檔案
--batch從不詢問使用者輸入,使用所有預設配置。
Miscellaneous(雜項):
--beep發現SQL注入時提醒
--check-payloadIDS對注入payloads的檢測測試
--cleanupSqlMap具體的UDF和表清理DBMS
--forms對目标URL的解析和測試形式
--gpage=GOOGLEPAGE從指定的頁碼使用谷歌dork結果
--page-rankGoogledork結果顯示網頁排名(PR)
--parse-errors從響應頁面解析資料庫管理系統的錯誤消息
--replicate複制轉儲的資料到一個sqlite3資料庫
--tor使用預設的Tor(Vidalia/Privoxy/Polipo)代理位址
--wizard給初級使用者的簡單向導界面
===============================================================================
本文轉自Tar0 51CTO部落格,原文連結:http://blog.51cto.com/tar0cissp/1312227,如需轉載請自行聯系原作者