当我们发现一个注入点,他不会有数据回显,但会有错误提示,此时我们就可以使用报错注入
下面我们介绍三种常用的报错语句,我们通过sql-labs来进行演示
1.floor
首先我们把id=1作为参数,正常访问一下
发现可以正常访问,而我们随便构造一个不存在的id值,然后再访问
发现没有可用的信息进行回显,由此,我们断定,这个地方没有数据回显,如果有注入点我们可以使用报错注入,
and (select 1 from (select count(*),concat((payload),floor (rand(0)*2))x from information_schema.tables group by x)a)
在payload部分,我们可以构造自己的查询语句,而floor()最多可以返回64个字符,例如
上图已经显示出数据库,剩下的爆出表,字段,数值,不再演示
2.updatexml
updatexml(1,payload,1)
payload部分是我们要进行构造的数据,该函数也对输出的字符进行了限制,最长输出32位,并且对payload的返回类型进行了限制,只有在payload返回的格式不是xml时候才能生效
3.extractvalue
extractvalue(1, payload)
payload部分是我们要进行构造的sql语句
该函数也对输出字符进行了限制,最大输出32字符