SQL-labs练习记录(5~6)【报错注入】

SQL-labs练习记录(5~8)【报错注入】

Less 5

第五题会发现与之前的完全不同,它只显示了you are in…并不能直接查询,也不好查看回显位置
首先直接单引号测试能够发现报错,爆了一个附近有双引号,可以闭合,但是闭合后恢复正常,仍旧没有数据。
这里我们利用的是错误回显爆出数据,这就是报错注入。
这里要介绍关键的两个函数:

extractvalue(),updatexml()

它们都是来操控xml格式文档的,xml神似html,也是以标签树的形式呈现内容,通过Xpath语言来进行元素选取,Xpath语言以树-节点的方式选取元素。
回到正题,
extractvalue()即提取对应位置值接受两个参数,一个为Xml文档名,第二个为Xpath位置。
updatexml()改变文档中符合条件的值,接受三个参数,分别是XML文档名,Xpath位置,新值(用于替换指定位置)

?id=1' and (select extractvalue('anything',concat('~',(select group_concat(schema_name) from information_schema.schemata),'~'))) --+

这两个函数都有一个特点,它们会显示无法识别的内容是什么,也就是说会对你的value进行解析,并且进行报错。
在上面这个语句中,extractvalue作为筛选条件出现,明显第二个参数不符合规范。这时就会报出这个错误:
在这里插入图片描述
在这里插入图片描述

自然,updatexml一样的原理,仅仅第二个参数有问题
在后面,更推荐使用and的形式,union容易出现两个SQL语句产生的记录的表结构不一致的错误。
这里要提到一个小问题,为什么第二个参数的concat首尾要连接两个特殊字符,这是因为报错信息从特殊字符开始,然后字母和之后的内容,为了防止信息丢失,就必须一开始就是特殊字符。
查询开始:

显然这里还有问题,显示不全了。group_concat()表示将筛选结果拼凑起来一齐显示,使用limit即可,limit两个参数分别表示行数与读取数量,limit 0,1就是读取第一行的值(即第一个数据库),这里grouo_concat()也改为concat()不会再返回单一值,这样才能遍历它。

?id=1' and (select extractvalue('anything',concat('~',(select concat(schema_name) from information_schema.schemata limit 4,1),'~'))) --+

在这里插入图片描述

终于在第四个参数值找到了我们前文查到的当前数据库’security’
进一步查找,思路与前文一样:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看到敏感数据

Less 6

与第5关大同小异,只是报错方式不同,这里是双引号报错,然后还是使用报错注入即可。
在这里插入图片描述

posted @ 2021-06-07 21:02  Sayo-NERV  阅读(54)  评论(0编辑  收藏  举报