宽字节注入 宽字节注入产生的原因是在不同编码中,中英文所占字节不同所导致,在GBK编码中,一个汉字占两个字节,在utf-8中,一个汉字占3个字节。 下面我们用sqllib32关复现宽字节注入 通过源码可以发现,check_addslashes()这个函数,会’ , “ , /,产生了转义,分别转义成\’ , \”,\/使功能字符变成普通字符,失去其原有的作用。在通过GET方式传入的参数id,会收到check_addslashes()函数的过滤。
192.168.43.122/sql/Less-32/?id=1' 页面正常显示,发现’被转义 (\’)
转义字符\的编码为5c,在gbk编码范围内,我们可以通过在’之前添加一个16进制编码的字节%df,与5c结合起来,组成一个汉字,0xdf5c 就是一个汉字"運",使5c失去其转义的作用,绕过转义,继续进行sql注入
|