sqllabs less-32~37宽字节出入

本文详细探讨了MySQL中的宽字节注入问题,包括%df如何吃掉ASCII字符,以及less32到less37各关卡中涉及的过滤和转义机制。通过举例说明了如何构造payload绕过过滤,同时提到了防御措施,如设置字符集、使用特定函数等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前边

%df 吃掉 \

在mysql中,用于转义(即在字符串中的符号前加上”\”)的函数有addslashes,mysql_real_escape_string,mysql_escape_string等
大家都知道%df’ 被PHP转义(开启GPC、用addslashes函数,或者icov等),单引号被加上反斜杠\,变成了 %df\’,其中\的十六进制是 %5C ,那么现在 %df\’ =%df%5c%27。GB2312、GBK等这些都是常说的宽字节,实际上只有两字节。宽字节带来的安全问题主要是吃ASCII字符(一字节)的现象,即将两个ascii字符误认为是一个宽字节字符。如果程序的默认字符集是GBK等宽字节字符集,则MySQL用GBK的编码时,会认为 %df%5c 是一个宽字符,相当于一个汉字也就是縗,也就是说:%df\’ = %df%5c%27=縗’,有了单引号就好注入了。
在这里插入图片描述例如less32关的这几行代码,作用:在\ ’ "后边加\。

将 \’ 中的 \ 过滤掉

另外一种可以构造 %**%5c%5c%27 的情况,后面的%5c 会被前面的%5c 给注释掉

less32

1.由前边的宽字节注入可以构造出playload:?id=-1 %df%27 %20 union %20 select %20 1,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值