寬位元組注入 GBK雙位元組繞過

2021-10-05 07:33:25 字數 687 閱讀 6031

addslashes() 函式返回在預定義字元之前新增反斜槓的字串---php addslashes()函式

在mysql中,用於轉義(即在字串中的符號前加上」\」)的函式有addslashes,mysql_real_escape_string,mysql_escape_string等,還有一種情況是magic_quote_gpc,不過高版本的php將去除這個特性。

mysql 在使用 gbk 編碼的時候, 會認為兩個字元為乙個漢字, 例如%aa%5c 就是乙個

漢字(前乙個 ascii 碼大於 128 才能到漢字的範圍) 。 我們在過濾 』 的時候, 往往利用的思

路是將 『 轉換為 \』 **換的函式或者思路會在每一關遇到的時候介紹) 。

因此我們在此想辦法將 『 前面新增的 \ 除掉, 一般有兩種思路:

1、%df 吃掉 \ 具體的原因是 urlencode(『\) = %5c%27, 我們在%5c%27 前面新增%df, 形

成%df%5c%27, 而上面提到的 mysql 在 gbk 編碼方式的時候會將兩個位元組當做乙個漢字, 此

事%df%5c 就是乙個漢字, %27 則作為乙個單獨的符號在外面, 同時也就達到了我們的目的。

2、 將 \』 中的 \ 過濾掉, 例如可以構造 %**%5c%5c%27 的情況, 後面的%5c 會被前面的%5c

給注釋掉。 這也是 bypass 的一種方法。

寬位元組注入繞過原理

首先我們知道,在計算機中每乙個字元為8位,那麼就是1個位元組,所謂的寬位元組注入就是兩個位元組合併從而進行繞過,例如,韓文,日文,繁體字 都屬於寬位元組型別。下面我來個簡單的演示。當我們輸入單引號的時候,那麼會被轉義成 這樣就無法進行注入 但是進行繞過的話,在id引數加入乙個 df 被轉義後成為 d...

PHP雙位元組 寬位元組編碼漏洞

用乙個demo.php顯示效果,如下 header content type text html charset gb2312 echo get str 受汙染的,但還有gpc echi echo addslashes get str 呼叫addslashes函式過濾有害字元 此時gpc on。先看...

寬位元組注入

大家都知道 df 被php轉義 開啟gpc 用addslashes函式,或者icov等 單引號被加上反斜槓 變成了 df 其中 的十六進製制是 5c 那麼現在 df df 5c 27,如果程式的預設字符集是gbk等寬位元組字符集,則mysql用gbk的編碼時,會認為 df 5c 是乙個寬字元,也就是...