sqlilab17

sqlilab17

十一月 23, 2021

updata报错注入

![](D:\p\picture\屏幕截图 2021-10-25 214004.png)

看都题目passwor reset,重置密码,在输对用户名的正确的情况下会把用户名的密码更改为我们输入的密码

![](D:\p\picture\屏幕截图 2021-10-25 214449.png)

![](D:\p\picture\屏幕截图 2021-10-25 214501.png)

再来康康源码

![](D:\p\picture\屏幕截图 2021-10-25 214805.png)

我们看到他先用select查出了用户名密码然后再用了updata把新的密码上传

password=’$password‘说明这里要用’闭合

再来看返回的值

![](D:\p\picture\屏幕截图 2021-10-25 214501.png)

没有回显点,也不是布朗类型的返回,看看会不会报错

![](D:\p\picture\屏幕截图 2021-10-25 215546.png)

有报错那就用报错注入

构造playload

1’ and updatexml(1,concat(0x76,(select group_concat(password) from users),0x76),2)#

![](D:\p\picture\屏幕截图 2021-10-25 220011.png)

报错了,意思是不能在要updata的表里查数据,那么我们套一层子查询,间接查询

重新构造playload

重新构造playload

1’ and updatexml(1,concat(0x7e,(select group_concat(password) from (select password from users) as a),0x7e),1)#

![](D:\p\picture\屏幕截图 2021-10-25 221120.png)

updatexml()的报错原理和groupby差不多,在updatexml的三个参数中输入不符合xml语法的内容就会报错并执行输入的语句