基本介绍
首先我们要一起了解一下什么是窄字节、宽字节、宽字节编码(英文字符默认占用1个字节,汉字默认占用2个字节)。
窄字节:如果一个字符的大小为1个字节,则称为窄字节。
宽字节:如果一个字符的大小为2个字节,则称为宽字节。
宽字节编码:GB2312、GBK、GB18030、BIG5、Shift_JIS等
宽字节注入主要是由于程序员将数据库编码和PHP编码设置为两种不同的编码格式引起的。例如,使用PHP连接MySQL时,很多人都会添加语句。
\’setcharacter_set_client=gbk\’
MySQL使用GBK编码时,将两个字符视为一个汉字。例如:%aa%5c就是一个汉字(前面的ASCII码必须大于128才能达到汉字范围)。想法是将\’ 转换为\\\’,你可以找到一种方法来删除\’ 之前添加的\\。总的来说,有两种想法:
%df吃掉\’\\\’:具体原因是urlencode(\’\\)=%5c%27。在%5c%27前添加%df,形成%df%5c%27,上面的mysql在GBK编码时会将这两个字节视为一个汉字。在本例中,%df%5c 是汉字字符,%27 是外部的另一个符号。这样还是达到了目的。
可以构造排除\\ in \\\’: %**%5c%5c%27的情况。这也是一种绕过转换为\’utf\’的方法。 – 16
#【漏洞挖掘】——117及以上对Wide Byte Injection的详细分析相关内容来源网,仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92307.html