宽字节注入时是利用mysql的一个特性,使用GBK编码的时候,会认为两个字符是一个汉字 ,例如%aa%5c 就是一个 汉字(前一个 ascii 码大于 128 才能到汉字的范围)。我们在过滤单引号的时候,往往利用的思 路是使用函数将‘ 转换为 \’替换反斜杠,反斜杠的GBK编码为%5C,根据GBK编码在前面加上%DE,%DF,%E0。。。都可以组成一个汉字,从而绕过过滤函数。这就是宽字节注入的原理。
sqli第32关
先看一下源代码,下述函数为过滤 ‘ \ 的函数,将 ‘ 转为 \’ , 将 \ 转为 \\ ,将 “ 转为 \”
因此可以使用宽字节注入,可以添加一个%df,将%5c吃掉即可,payload如下:
?id=-1%df%27%20union%20select%201,database(),3--+
然后就可以通过union注入获取数据了。
sqli第33关
先看一下源代码,使用了addslashes()函数
payload和32关的一样,如下:
?id=-1%df%27%20union%20select%201,database(),3--+
sqli第35关
先看一下源代码
35 关和 33 关是大致的一样的,唯一的区别在于 sql 语句的不同,区别就是 id 没有被单引号包括起来,那我们就没有必要去考虑 check_addslashes()函数的意 义了,直接提交 payload
sqli第36关
先看一下源代码,是使用了mysql_real_escape_string()函数进行的过滤
payload如下:
?id=-1%df%27union%20select%201,user(),3--+
标签:函数,sqli,注入,MySQL,源代码,payload,字节 From: https://www.cnblogs.com/yunque01/p/16756943.html