Less-11
双注入(来自b站大佬视频https://www.bilibili.com/video/av77851975?t=26&p=7)
1.首先随便写一点 然后直接抓包
可以看见报错了
这个时候我们加个单引号,然后分析后台报错得语句
可以看见我们只看见了passwd得语法问题 没有看见uname得报错 我们初衷就是要加单引号,通过报错看看uname得语法
所以加一个双引号看看
这个时候后台报错就出来了
这个时候想办法让他不报错直接admin‘# 闭合单引号
可以看见不报错了
然后用order by测试列数(用二分法)
最后才测到是2
然后union select联合查询
可以发现不显示内容 只能看见有没有报错,那么我们就没办法通过回显数据来查询我们想要得数据
所以 得换新方法!!
回到我们第一步报错得地方
思路就是 既然他能通过报错去暴露一些语法信息 那么能不能通过报错去暴露一些敏感信息呢
可以 就是今天的方法 双注入(也就是注入里面会用到两个select)
floor(rand()*2)这个意思就是在0和1里面取随机值 floor是取整数位,这个的目的就是要出现重复组件
count(1)是统计行数
group by 的意思是分组,把所有的列按照属性进行分组
比如(下图的意思就是要统计所有mysql数据库的每一个数据库里面有几个表,group by table_schema 的意思就是按照table_schema进行分组)
(count(1)是统计行数)
画图展示其原理
先建立临时表 挨个查询,(此处建议看视频)
为什么是这个结果呢 ?
当mysql里面一个表里面出现两个数据相同的时候,会提示这样的错误叫重复条目(因为组件冲突了)
这个时候我们使用concat的
可以看出当我把版本信息这个组件加入的时候,组件冲突,mysql表就报错了,同时把这个值内容爆出来了
那我们就换 把version()改为database(),数据库就出来了
好 双select来了
可以用group _concat()但是这里group _concat()不行 于是就limit一行一行来(这个limit之前讲过在post单符号注入)
可以爆出第一个表emails
limit 4 ,1就爆不出了 说明里面有三个表
再去爆字段
再去爆字段的值
再去看看users表中id的字段