[实验吧](web)因缺思厅的绕过 源码审计绕过

0x00 直接看源码吧


早上写了个注入fuzz的脚本,无聊回到实验吧的题目进行测试,发现了这道题

地址:http://ctf5.shiyanbar.com/web/pcat/index.php

[实验吧](web)因缺思厅的绕过 源码审计绕过_第1张图片

分析如下:

1. 看过滤,过滤了一些查询关键词,明注是不可能了,过滤括号,通常的盲注也是实现不了。

2. 看要得到flag的条件,我们输入的密码和查询的密码要一致,而且查询结果只能有一条。


0x01 正确姿势


懒得写思路流程了,这里直接给出两种解题姿势,一种是盲注出密码,一种是使用with rollup 再加php弱类型。

1. 先看盲注吧:

payload: ' or pwd like 's%' limit 1#

解释: 要使查询语句正常而且出结果,必须要有一个为真,这里是根据pwd进行判断的,若此时查询出来的结果中的pwd 的值是以s开头,则返回true ,若不是,则返回false。

我是看人家writeup学到的,不得不承认,要是在知道列名的情况下,这种盲注手段简单方便很多,让我对 like的印象加深了许多。

那剩下来就是脚本的事情了。

2. with rollup

这是我的一个知识盲区,出题人估计一开始的出发点也是这个吧,所以我也想记录一下。

个人下面通俗解释一下 with rollup:   要配合 group by 一起使用,"group by username with rollup",简单说一下,就是使用with rollup 查询之后,查询结果集合里面会多一条NULL 记录,这一题利用NULL 和空字符相等,然后得到flag。测试如下图:


[实验吧](web)因缺思厅的绕过 源码审计绕过_第2张图片


[实验吧](web)因缺思厅的绕过 源码审计绕过_第3张图片


[实验吧](web)因缺思厅的绕过 源码审计绕过_第4张图片
所以这题的绕过的正确姿势是

提交 username=' or 1 group by pwd with rollup limit 1 offset 2 # 


0x01 小结


偏向于盲注的我对like的印象分蹭蹭往上涨,不仅仅停留在绕过“=” 的过滤了

with rollup 也是一种不错的姿势 除非是某些题目故意设定 要不然一般或许有更好的选择吧

你可能感兴趣的:([实验吧](web)因缺思厅的绕过 源码审计绕过)