报错注入
**报错注入:**利用报错信息,结合函数规则进行数据读取的一种注入攻击
**使用场景:**没有回显点,但有报错信息时则可以使用报错注入
常用函数一:updatexml() //新xml文档函数
语法:updatexml(目标xml内容,xml文件路径,更新的内容)
实际上这里是去更新了XML文档,但是我们在XML文档路径的位置里面写入了子查询,我们输入特殊字符,因为不符合输入规则故进行了报错
但是报错的时候,它其实已经执行了子查询代码!
常用函数二:对XML文档进行查询的函数
语法:extractvalue(目标xml文档,xml路径)
第二个参数 xml路径是可操作的地方,xml文档中查找字符位置是用 /xxx/xxx/xxx/…这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。
宽字节注入
magic_quotes_gpc函数 [PHP5.4及其以上魔术引号是被删除了]
魔术引号函数的作用:当PHP的传参中有特殊字符就会再前面加转义字符’',来做一定的过滤
addslashes()函数
判断解析用户提交的数据,如包括有:post、get、cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误。
单引号(’)、双引号(”)、反斜线(\)等字符都会被加上反斜线
单引号和双引号内的一切都是字符串,那我们输入的东西如果不能闭合掉单引号和双引号,我们的输入就不会当作代码执行,就无法产生SQL注入,那我们该怎么办?
宽字节注入原理:
1、目前多数网站使用的都为UTF-8编码,如果MySQL数据库的编码设置为GBK编码
此时就会产生宽字节注入攻击
2、UTF-8编码:一个中文字符占三个字节 GBK编码:一个中文字符占两个字节
如何绕过**\ ?
使用: %df’ 或者任意一个中文字符
例如:中’
发现:在URL编码中 \ 为%5C,然后我们会想到传参一个字符想办法凑成一个gbk字符
例如:‘運’字是%df%5c
利用场景
如果网站使用了 addslashes()函数或者开启了魔术单引号,恰巧MYSQL数据库为GBK,就会造成宽字节注入
为GBK编码
此时就会产生宽字节注入攻击
2、UTF-8编码:一个中文字符占三个字节 GBK编码:一个中文字符占两个字节
如何绕过**\ ?
使用: %df’ 或者任意一个中文字符
例如:中’
发现:在URL编码中 \ 为%5C,然后我们会想到传参一个字符想办法凑成一个gbk字符
例如:‘運’字是%df%5c
利用场景
如果网站使用了 addslashes()函数或者开启了魔术单引号,恰巧MYSQL数据库为GBK,就会造成宽字节注入