寬位元組注入

2021-10-01 20:01:16 字數 611 閱讀 5055

利用mysql特性, 在使用gbk編碼時將/進行轉義

ascii碼傳輸中文是會變成字串: utf-8, gbk(寬位元組注入, 預設兩個位元組為乙個漢字)

十六進製制形式

addslashes-

在gbk編碼中, 會使用addslashes函式(在傳入值中插入「/」以轉義)

如何逃逸

將\轉義

把\弄沒

e.g.

注入 時, 在後面加』 變成

』, 資料庫並沒有報錯

原因:addslashes()已經把我們提交的單引號給轉義了

因為我們的目的是讓單引號溢位而使資料庫報錯,但是現在單引號被轉義了所以變成了"2』".

按照gbk的編碼演算法, 我們輸入的是2%5c%27

解決方法:因為gbk編碼預設兩個字元為乙個漢字, 我們可以通過輸入寬字元%df使反斜槓和這個%df形成乙個漢字,這樣後面的單引號就不會被轉義而達到逃逸的效果

輸入%df』

這時,根據gbk編碼,輸入的內容為2%df%5c%27

這時, %df和%5c組成了漢字 運 查詢就變為2運』,單引號成功逃逸

寬位元組注入

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

寬位元組注入

在使用php連線mysql的時候,當設定 set character set client gbk 時會導致乙個編碼轉換的問題,也就是我們熟悉的寬位元組注入,當存在寬位元組注入的時候,注入引數裡帶入 df 27,即可把 5c 吃掉,舉個例子。當提交 1 1 23 時,mysql的執行的sql語句為 ...

寬位元組注入

這個md的 是我之前做南郵的一道sql注入題目,我實在是調動目前所學的sql注入知識沒做出來,一直搞不懂將 轉義為 因此去網上看了一下wp,是考寬位元組注入,於是在網上找了教程學習一下,這個文章只是為了記錄一下自己的學習過程,不喜勿噴,有錯希望指正 寬位元組注入指的是mysql資料庫在使用寬位元組 ...