因为有了魔术引号的防御。
让无法闭合
绕过
1.不需要闭合。
2.查看作用域
3.宽字节注入
无论是什么到计算机上都会转换成二进制。
汉字变成ascii数字
多字符编码=》多个字符组在一切成为一个字
GBK是双字节编码
乱码的核心就是编码不同
编码不同会产生歧义
两个编码可能是两个字节,也有可能是有个字节
所以
宽字节注入的核心就是传一个字符是反斜杠成为有个汉字。
数据库使用GBK编码可能存在宽字节注入。
1.首先判断尝试是否为GBK编码
%df和\可以组成一个汉字,运。
在查表名的时候,会出现databse='表名'
因为魔术引号,遇到单引号就会加反斜杠转义
所以
这里的表名会变为\'表名\'
,就会变成一个这样的字符串。
解决方法两种
1.替代法
databse()
表名呢
套娃,子查询
2.16进制法。
MySQL支持16进制。
直接把表名编译为16进制。
但是16进制是一窜数字。
需要让别人知道这是16进制
所以 0x 加16进制
告诉系统这是16进制,而不是数字
sqlmap跑宽字节
帮助sqlmap闭合一下就可以跑出来。
%fd使url编码。
如果注入方式使post,就无法修改了
就是用burp抓包,修改hex
或者直接传汉字