漏洞重溫之sql注入(七)

2022-09-15 04:00:15 字數 2789 閱讀 6895

less-31

首先,進入31關,我們先新增上id引數。

然後,我們檢視原始碼。

我們門可以看到,index頁面原始碼其實很簡單,網頁也沒有對我們的輸入做防禦。

所以這裡我們只需要使用 雙引號加括號閉合,然後再後面拼接sql語句就可以了。

payload如下:

至於login頁面,跟前面一關一樣,基於引數汙染的注入。

payload如下:

第三十一關,通關。

第三十二關,同樣為get型注入,然後進入我們喜聞樂見的看原始碼環節。

從這段**中,我們可以看到,程式在最開始定義了乙個函式,並且將我們傳入的引數使用了這個函式進行了轉義。根據**,我們可以發現,網頁是過濾了單引號,雙引號和斜槓。

接著往下看。

因為在正常情況下,我們構造閉合需要使用到單引號或者雙引號,所以在一般情況下,如果單雙引號被過濾,我們就無法進行正常注入操作。

但是,根據**:

mysql_query("set names gbk");
我們知道網頁使用的是gbk編碼,所以我們就可以使用寬位元組注入來進行繞過對單引號的過濾。

構造payload:

對於這個payload,簡單點來理解的話就是,如果**使用gbk編碼,那麼%df就會和過濾中新增的內容組成乙個字元,這就導致了本來應該針對單引號的過濾被提前組合,所以單引號就可以免於被過濾。後面因為是直接在url中新增內容,所以需要使用「+」來代替空格,不然會引起語句出錯。

第三十二關,通關。

檢視原始碼。

首先,第乙個紅框內容,告訴我們網頁封裝了乙個函式來進行引數過濾。其中addslashes函式的作用是在輸入內容前加上乙個斜槓。

第二個紅框內容,告訴我們網頁將我們輸入的引數進行了轉義。

第三個紅框內容,告訴我們這裡可以使用寬位元組注入(不明白為什麼的可以去看上一關),以及這裡的閉合需要使用單引號。

知道這幾點之後,我們就可以開始構造payload了:

1%df%27+and+1=2+union+select+1,version(),database()+--+
第三十三關,通關。

less-34

跟前面幾關不同,34關是post型注入,面對這種注入,我們一般有兩種方式,第一利用工具包抓取請求包,直接在請求包中拼接payload,另外一種就是利用hackbar的post data功能。

這裡我們使用第一種。

但我們首先還是要先檢視原始碼。

網頁將我們輸入的uname引數和passwd引數使用addslashes函式進行轉義,然後網頁又使用gbk編碼,所以我們可以使用寬位元組注入來進行繞過。

這次的payload可能跟之前有些區別。

因為這裡在登入成功之前沒有回顯位置。所以在我們不確定使用者名稱和密碼的時候,我們可以使用報錯注入來進行注入攻擊。

payload如下:

1%df%27+and+updatexml(1,concat(0x7e,(database()),0x7e),1)+--+
第三十四關,通關。

less-35

第三十五關同樣是get型注入,直接看原始碼。

首先我們看到了網頁對我們輸入的id同樣進行了過濾,而且網頁依然使用了gbk編碼。

但是,這裡並不需要使用到寬位元組注入。

因為我們可以明確的看到,id引數,並沒有使用任何包裹,也就是說,我們可以直接在後面拼接我們希望系統執行的sql語句。

payload:

1 and 1=2 union select 1,version(),database()
第三十五關,通關。

漏洞重溫之sql注入(總結)

sql注入即是指web應用程式對使用者輸入資料的合法性沒有判斷或過濾不嚴,攻擊者可以在web應用程式中事先定義好的查詢語句的結尾上新增額外的sql語句,在管理員不知情的情況下實現非法操作,以此來實現欺騙資料庫伺服器執行非授權的任意查詢,從而進一步得到相應的資料資訊。一.網頁為了滿足正常使用者檢索所需...

SQL注入漏洞

sql注入漏洞曾經是web應用程式的噩夢,cms bbs blog無一不曾受其害。sql注入的原理 以往在web應用程式訪問資料庫時一般是採取拼接字串的形式,比如登入的時候就是根據使用者名稱和密碼去查詢 string sql select top 1 from user where username...

SQL注入漏洞

sql注入,就是通過把sql命令插入到web表單遞交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令,比如先前的很多影視 洩露vip會員密碼大多就是通過web表單遞交查詢字元暴出的,這類表單特別容易受到sql注入式攻擊 sql注入的發生 當應用程式使用輸入內容來構造動態sq...