报错注入原理:
构造payload让信息通过错误提示回显出来
让错误信息中返回数据库中的内容,即可实现sql注入
报错注入常用的几个函数
floor():向下取整
rand()函数:在0和1之间产生一个随机数 rand(0)表示在一段时间内是一个固定值
floor(rand(0)*2)
就是对rand(0)产生的随机序列乘以2后的结果,再进行取整,得到的是由0和1组成的伪随机序列
goup by函数用于对数据进行分组(相同的分为一组)
count()函数用于统计结果的记录数
floor()报错注入:
select count(*) from information_schema.tables group by concat(0x7e,(select version(),0x7e),floor(rand(0)*2));
group by对rand()函数进行操作时产生错误
extractvalue()报错注入:
extractvalue() :对XML文档进行查询的函数
语法:extractvalue(目标xml文档,xml路径)
第二个参数 xml中的位置是可操作的地方,xml文档中查找字符位置是用 /xxx/xxx/xxx/…这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。
XPATH语法错误产生报错
extractvalue(1,concat(0x7e,(select version()),0x7e));
updatexml()报错注入:
语法:updatexml(XML_document, XPath_string, new_value);
XPATH语法错误产生报错
select updatexml(1,concat(0x7e,(select version()),0x7e),1);