本章分享的宽字节注入是用的靶场的第三十六关来演示
靶场下载链接:GitHub - workcha/sqli-labs-master: sql注入必练习题目
宽字节注入条件:
(1)数据库查询设置为GBK编码
(2)使用了addslashes(),mysql_real_escape_string(),mysql_escape_string()之类的函数
如上图,数据库用的是GBK编码
如上图,后端代码使用mysql_real_escape_string()这个函数,而这个函数是用于将字符串中的特殊字符进行转义处理,比如你输入一个 ' 这个符号,那么mysql_real_escape_string()这个函数就会转义为 \' 这个
第一步:检查网页有没有漏洞,这里使用宽字节来判断网页有没有漏洞,就是在url栏里写入%81,
如 ?id=1%81' 这样,这时如果网页报错,那么就确定网页有宽字节漏洞,如下图所示。
此时网页有 1乗' 是因为当我们输入 %81' 时,mysql_real_escape_string()这个函数把我们输入的东西转义为了 %81\' 这个,然后经过url编码,到MySQL查询语句里时,由于MySQL是用的是gbk编码,那么就会把%81%5c%%27,其中的%81%5c这两个融合在一起,转换成 乗 这个汉字,这是gbk编码的特性,最后形成 1乗' 导致MySQL语法报错,从而报错。
第二步:我们发现网页有报错回显,那么就可以使用我之前所说过的updatexml报错注入,来获取MySQL里的东西,这里就不在重复演示了。
以上就是宽字节注入的使用方法。
注:此宽字节注入注入仅供学习参考。