实验吧-因缺思汀的绕过

刚入手这道题目的时候,一脸懵逼。但是擦好看源代码,发现有提示。注意绿色字体
进入查看源代码
太长,截不下
截图中已经看出了一些障碍,题目过滤了好多sql语句,一开始我尝试sql注入,但是发现没有任何作用,当我看到那些过滤掉的sql语句关键字的时候,就看看有哪些没有过滤掉的,发现or,and,group by这些函数没有被过滤掉。
尝试 'or 1=1# 这里我只在uname里面输入了,然后把后面的注释了。
这里写图片描述
出现了一颗赛艇。观察源代码。
这里写图片描述
然后只差一步,但是却卡住。根据上面过滤发现,limit 可以使用,但是不能使用,()。没办法,百度,发现有一个很好用的函数offset。例如:

select * from user limit 2 offset 0

这段代码表示从表的第一行开始,返回两行。
于是尝试使用。

' or 1=1 limit 1 offset 0#
' or 1=1 limit 1 offset 1#
' or 1=1 limit 1 offset 2#

当offset 2的时候,返回的变成一颗赛艇,而0跟1都是 亦可赛艇。
证明表为两行。
又卡住了,百度得到 group by with rollup。实际操作得到,利用该语句,可以在查询的最后一行多出来一个空值。
这里写图片描述
再加上源代码中提供了一个 == 。NULL跟空字符串是相等的,所以可以使:if($key['pwd'] == $_POST['pwd']) 成立,继而可以得出flag。
所以整个pyload如下:

' or 1=1 group by pwd with rollup limit 1 offset 2#
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值