條件
- 使用addslashes函數或是開啓PHP的GPC
- 數據庫設置編碼爲GBK php utf-8
原理
前端輸入%df%27時首先通過上面的addslashes函數轉義變成了%df%5c%27(%5c是反斜槓\),以後載數據查詢前應爲設置了GBK編碼,便是在漢字編碼範圍內兩個字節都會從新編碼爲一個漢字,而後MySQL服務器就會對查詢語句進行GBK編碼便是%df%5c轉換成了漢字「運」,而單引號就逃逸了出來,從而形成SQL注入
能夠看到,咱們繞過了對於 ’ 的過濾。接下來從源代碼進行考慮:
上述函數爲過濾 ‘ \ 的函數,將 ‘ 轉爲 \’ , 將 \ 轉爲 \\ ,將 「 轉爲 \」。所以
此處咱們只能考慮 background 中的第一個思路,添加一個%df 後,將%5c 吃掉便可。
從 input HEX 中能夠看到df5c27 ,此處已經將 df5c 當作是一個字符了。