宽字节注入
迪丽瓦拉
2025-05-30 23:13:57
0

概述

如果一个字符的大小是一个字节的,称为窄字节;如果一个字符的大小是两个字节的,称为宽字节

像GB2312、GBK等这些编码都是常说的宽字节,也就是只有两字节

英文默认占一个字节,中文占两个字节

宽字节注入的原理

在开发网站过程中,一些程序员为了防止SQL注入,会使用反斜杠“\”对一些特殊字符进行转义。这时候就用到addslashes()函数,之前也遇到过

所以在我们注入的过程中使用单引号的话就会在单引号之前添加反斜杠,会对单引号%27进行转义,变成%5c%27;

这时候我们就用到了mysql的一些特性,mysql在使用宽字节编码的时候,会认为两个字符是一个汉字(也就是说前一个ascii码要大于128,才到汉字的范围)

可以在前边添加%df,形成%df%5c%27,而数据进入数据库中时前边的%df%5c两字节会被当成一个汉字;GBK编码中%df%5c就是繁体字“連”利用跟这个性质,我们就可以绕过addslashes()函数的转义

事例

这里利用piakchu提供演示

拿到提示之后进行登录因为是post请求,还是抓包进行更改比较好,构造语句kobe%df' or 1=1#

发包后获取到所有人的信息

然后接下来就是跟联合注入 一样的东西了,判断回显点,查询数据库,数据表,字段,值

就不一一演示了

相关内容