DVWA系列之3 medium級別SQL注入

2022-10-10 00:51:08 字數 1011 閱讀 1675

將「dvwa security」設定為medium中等級別,首先點選右下角的「view source」檢視此時的網頁原始碼,主要觀察與low級別的區別。

可以發現,這裡對使用者輸入的id引數進行了過濾,主要方法是使用了mysql_real_escape_string()函式,這個函式可以將$id變數中的單引號』、雙引號」、斜槓\等字元進行轉義,因而我們再輸入之前的「』or 1=1 #」就會報錯了,從錯誤提示中可以發現單引號』已經被轉義成了\』,因而注入語句無法發揮作用。

需要說明的是,在php中還有乙個與mysql_real_escape_string()功能類似的函式:addslashes(),這兩個函式的功能都是對特殊字元進行轉義,那麼到底用哪個函式更好一些呢?百度了一下,發現大家也是各執一詞。有人說mysql_real_escape_string()函式需要事先連線資料庫,可能會報錯,所以推薦使用addslashes();也有的人說addslashes()過濾不夠嚴格,推薦使用mysql_real_escape_string()。在dvwa中很明顯是推薦使用mysql_real_escape_string(),那麼我們就相信dvwa好了。

下面我們分析一下這裡該如何繞過過濾,繼續進行注入呢?我們再仔細觀察一下原始碼,可以發現引數id已經被改為了數字型,第三行語句中「user_id = $id」,而之前的low級別是「user_id = 『$id』」,其實這就是dvwa故意留下的乙個漏洞。

我們可以進一步進行確認,在文字框中輸入3以及1+2,發現兩者顯示的結果都是一樣的,因而可以斷定引數是數字型,這裡就應該採用數字型的注入方法。

數字型注入與文字型的最大區別就是不需要考慮引號閉合,下面我們來進行注入。

首先輸入「1 and 1=1」,顯示正常;輸入「1 and 1=2」,顯示不正常。判斷存在注入點。

分別輸入「1 order by 1」、「1 order by 2」,顯示正常;輸入「1 order by 3」,顯示錯誤,判斷存在2個字段。

輸入「1 union select 1,2」判斷出兩個欄位都可以代入引數進行查詢。

再接下來的操作就與之前相同了。

DVWA系列之1 環境搭建

軟體安裝完成後,在瀏覽器位址列中輸入可以開啟如下的測試頁面,證明軟體安裝成功。在軟體的安裝目錄下有乙個名為www的目錄,這就是 的主目錄了。在主目錄中有乙個php環境測試檔案phpinfo.php,可以在瀏覽器中輸入訪問該頁面進行測試。資料庫安裝完成之後,再次訪問dvwa,就會出現登入介面。dvwa...

DVWA系列之15 檔案包含漏洞利用

明白了檔案包含的原理之後,下面我們進入dvwa,選擇low級別的檔案包含。在頁面中有提示,可以編輯url中的page引數從而包含指定的檔案,預設情況下包含的是include.php檔案。讀取敏感檔案是檔案包含漏洞的主要利用方式之一,比如伺服器採用linux系統,而使用者又具有相應的許可權,那麼就可以...

DVWA系列之22 low級別上傳漏洞

大多數的 通常都會提供檔案上傳的功能,例如上傳或是文件等,只要 允許上傳,就有可能存在上傳漏洞。上傳漏洞與sql注入相比,其風險更大,利用上傳漏洞的主要目的是將webshell上傳到 中,從而達到控制 甚至整個伺服器的目的。在看過的很多 實踐案例中,上傳漏洞和sql注入都是兩種並重的主流 手法。在d...