知识点梳理:
1.php的防御函数
magic_quotes_gpc函数在php中的作用是判断解析用户提交的数据,如包括有:post、get、cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误。
单引号(’)、双引号(”)、反斜线(\)等字符都会被加上反斜线
2. 宽字节注入的题目中的单引号后为什么出现反斜杠?
是PHP的一种防护手段,叫做魔术引号,因为出现反斜杠等于转义了单引号变为字符串。
3.宽字节注入过滤原理
PHP发送请求到mysql时经过一次gbk编码,PHP会将获取到的数据进行魔术引号的处理,因为GBK是双字节编码,所以我们提交的%df这个字符和转译的反斜杠组成了新的汉字,然后数据库处理的时候是根据GBK去处理的,然后单引号就逃逸了出来。
4.宽字节注入绕过原理
已知我们的提交数据会被加入\,\的编码为%5c,我们在后面加上%df后变为了%df%5c,变成一个繁体汉字運,变成了一个有多个字节的字符
因为用了gbk编码,使这个为一个两字节,绕过了单引号闭合,逃逸了转义
5.为什么最后的所查询表名要用16进制编码
因为要用到单引号,会对查询产生影响,单引号会被加上反斜杠