寬位元組注入

2021-10-19 11:52:12 字數 1187 閱讀 2287

​ 寬位元組注入就是sql注入的一種,與普通的sql注入不通,在我們測試payload時會發現它對『這個符號進行了轉義,而繞過它的方法也很簡單,在單引號前加入%df(這裡不單指%df這乙個,其它的也可,下面會說到)即可繞過。其中涉及到的知識有gbk編碼、url轉碼等等。

​ gbk全名為漢字內碼擴充套件規範,英文名chinese internal code specification。共收錄漢字21003個、符號883個,並提供1894個造字碼位,簡、繁體字融於一庫。

​ url編碼是一種瀏覽器用來打包表單輸入的格式。瀏覽器從表單中獲取所有的name和其中的值 ,將它們以name/value引數編碼(移去那些不能傳送的字元,將資料排行等等)作為url的一部分或者分離地發給伺服器。舉個例子,就像在有些瀏覽器的位址列中會看到%20、%27諸如此類的符號,這其實就是url編碼。

​ 提到寬位元組注入就有乙個不得不提的php函式addslashes()函式,這也是為什麼要寬位元組注入的原因之一。

​ addslashes()函式的作用是返回在預定義字元之前新增反斜槓的字串。預定義的字元有單引號(』),雙引號("),反斜槓(\),null。

​ 什麼意思呢,學函式最好的方法就是去用它,讓我們來看乙個例子。

可以看到,addslashes函式在預定義字元前加了\,也就是進行了轉義,相當於簡單的預防了一下sql注入,但是讀到下面你就會發現,其實它並沒有什麼卵用。

​ 說了這麼多,還是沒說到,這些gbk編碼和url轉碼和寬位元組注入到底有什麼關係。由於gbk編碼是雙位元組的,也就是我們常說的寬位元組,這裡我們可能稍微懂了為什麼它叫寬位元組了。具體的內容讓我們接著往下看。剛剛說了,由於addslashes函式的轉義作用,導致一些符號被轉義,無法進行正常的sql注入,必須想辦法去繞柱這個\。而這裡繞過的方法有兩種,一種是在\前面加個\ (用魔法來打敗魔法);另一種則是我們說的寬位元組,由於gbk為雙位元組編碼,在編碼時它會把乙個位元組「吃掉」,導致\變成亂碼,以此來繞過,而我們常用的就是%df。例如在單引號前加%df,本來是未加%df前會進行轉義變成 " \ 』 ",但是加入%df後gbk編碼則會將%df%5c(%5c是\的url轉碼)一起編碼,從而達到繞過的作用。因此我們也從中知道了寬位元組注入只有黨=當資料庫編碼為gbk時才適用。

​ 本人純小白一枚,第一次寫部落格,如有錯誤,還請看到這篇文章的各位大佬指出。

寬位元組注入

大家都知道 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資料庫在使用寬位元組 ...