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引數
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。