SQL注入(回顯)-DVWA

概述

LOW等級

1、首先嚐試正常操作,輸入1

可是這裏web應用通過查詢數據庫,獲取了id爲1的用戶的信息,猜測SQL語句爲:

2、接下來檢測是否存在SQL注入漏洞,輸入1’  

報錯,則說明單引號注入到SQL語句中報錯,存在SQL注入漏洞

嘗試數字型,查詢結果與id=1時的結果一樣

嘗試第二種情況,成功執行

嘗試雙引號,也沒有成功

所以可知這裏的變量是用單引號來進行閉合的

3、接下來使用order by 確定查詢的字段數

通過嘗試可得出字段數是2

4、用union select確定回顯點

 

5、嘗試利用回顯點來查詢數據庫的版本和數據庫的目錄

同樣可以查詢數據庫的用戶名和名稱

查詢表名

查詢列名

查詢用戶名密碼(密碼可通過md5解密):

同時也可以讀取文件(這裏用MySQL的load_file函數)

6、寫入webshell

PHP一句話木馬,執行cmd參數的值

我們要將該webshell寫入物理路徑,這裏通過引發異常爆出web目錄

利用select...into outfile...寫入,

嘗試訪問,寫入成功

嘗試執行代碼system(dir) , system(dir)在PHP中代表用系統命令去執行dir

7、利用sqlmap 

當前用戶和數據庫名

執行結果

查表名:

查字段名:

用戶名和密碼

獲取webshell

輸入物理路徑:

執行dir

Medium等級

1、在medium等級中,id號不用我們輸入,而是選擇,是post請求

 

Tamper date改包

 

發現失效了,我們輸入的1'被轉義了

嘗試輸入1"和1'發現都被轉義了,嘗試沒有引號,發現可以成功執行

2、手工利用方法:獲取用戶名密碼

3、medium等級注入技巧

在查詢表名時,DVWA的單引號會被轉義,可通過HEX編碼繞過

4、sqlmap檢測

利用

High等級

1、嘗試單引號,成功執行,和low等級相同是字符型注入

2、手工利用方法,猜用戶名密碼

成功讀取

3、sqlmap利用

這一等級,注入的點和返回的點不在同一個頁面,要用--second -order這個參數來指定返回的頁面

sql注入預防

Impossible等級檢測了id數據類型,使用預編譯綁定id變量,有效防止SQL注入

參數化SQL語句

也可使用存儲過程和白名單。                                        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章