1. 程式人生 > >DWVA----sql injection----sqlmap的使用

DWVA----sql injection----sqlmap的使用

LOW級別

step1 測試注入點

首先我們一般都會使用

sqlmap.py -u "………………"的指令來進行嘗試

結果卻發現了報錯,表示沒有可注入點。我們來找一下不出結果的原因

首先,我們可以確認low級別的必定存在注入點。因此我們排除網站沒有注入點這個原因

那麼會不會是因為某些引數沒有設定好呢?

使用burpsutie抓包發現

在提交申請的時候,需要cookie,因此我們嘗試在掃描前加入--cookie引數

這次的注入我們帶上了cookie引數

下面看看結果

不出意料,顯示出相應的注入結果

step2 爆當前使用資料庫名

首先我們可以使用--dbs引數檢視所有資料庫名

但是這樣我們是不清楚當前的資料庫的,因此使用--current-db選項

如圖,我們得到了當前資料庫名dvwa

step3 爆表名

首先使用-D dvwa限定查詢的資料庫為dvwa ,之後增加--tables爆表名

顯示出兩個表,一個users,一個guestbook

猜測我們想要的在users中

step4 爆列名

嗯,爆出了列名,我們需要user_id(可不需),user,password

step5 爆欄位

大功告成

關於命令的查詢,可以到我另一篇文章《SQLMAP幫助文件全解析》進行學習~

Middle級別

到了middle級別後我們可以明顯的發現,web應用不再使用GET方式進行請求,而是POST,因此我們需要使用--data引數

來對post的表單來進行處理

step1 測試注入點

可以看到我們的測試成功

接下來的爆資料庫名爆表名爆列名爆資料都跟上面一致,舉一反三即可

High級別

進入High級別後,我們可以看到,使用者的輸入是通過一個新的視窗進行的,即注入點輸入的資料在檢視返回結果時並不在同一個頁面上,因而我們如果進行常規的SQLmap注入是無法得到正確的結果的。同時依然是post請求

因此在這個級別的測試中,我們要選用sqlmap的二階SQL注入選項--second-order

step1 測試注入點

sqlmap.py -u "……"  --cookie="……" --data="id=1"  --second-order="……" --batch

這裡為了省事,使用了--batch選項

測試成功

step2 爆當前資料庫名

爆出資料庫名 dvwa

接下來的爆表名爆列名爆資料都跟上面一致,舉一反三即可

總結

在使用SQLmap的過程中,第一步對目標註入點的測試是最關鍵的。

使用--data引數來對post的表單來進行處理;

二階SQL注入選項--second-order。