首先我們了解下寬字節注入,寬字節注入源於程序員設置MySQL連接時錯誤配置為:set character_set_client=gbk,這樣配置會引發編碼轉換從而導致的注入漏洞。具體原理如下:
1.正常情況下當GPC開啟或使用addslashes函數過濾GET或POST提交的參數時,黑客使用的單引號 ‘ 就會被轉義為: \’;
2.但如果存在寬字節注入,我們輸入%df%27時首先經過上面提到的單引號轉義變成了%df%5c%27(%5c是反斜杠\),之後在數據庫查詢前由於使用了GBK多字節編碼,即在漢字編碼範圍內兩個字節會被編碼為一個漢字。然後MySQL服務器會對查詢語句進行GBK編碼即%df%5c轉換成了漢字“運”(注:GBK的漢字編碼範圍見附錄),而單引號逃逸了出來,從而造成了注入漏洞。
現在基本上都會將mysql的連接配置為“set character_set_client=binary”來解決這個問題,所以這篇文章將介紹出現在php中因為字符編碼轉換導致的注入問題。
漏洞來源於烏雲:http://www.wooyun.org/bugs/wooyun-2014-063219
原文出處:http://www.cnbraid.com/2016/sql4.html
-------------------
如果你認同支持我們每日分享的文章的話,請幫我們按個讚並且點擊追蹤「搶先看」,這樣就可以快速獲得最新消息囉!
您的分享及點讚,是我們最大的動力來源。
https://www.facebook.com/LonelyPoPo/