Buuoj Day2
今天是第二天,我们现在开始各种题都做一下
Basic,Crypto,Misc,Web通杀
你竟然赶我走
解压打开,发现是一张表情包
直接老套路,StegSlove走一波
一打开Format,哦豁~
整理一下,这题的答案就是
flag{stego_is_s0_bor1ing}
好的,下一题😎
大白
解压打开一看,只有半张图片了
那我们要想办法恢复他原来的图片咯
老套路走一波,先看一下二进制码有没有被修改
一打开010editor,哦豁~
CRC校验有问题
结合题目,我们改一下高度
保存退出我们就能看到完整的大白了
所以,flag{He1l0_d4_ba1}
基础破解
OK,又到了爷最喜欢的破解题
直接AHCHPR走一波
好了,他已经没有了
打开压缩包,哎,还有?
好的,base64走一波
这次的答案就是这个
flag{70354300a5100ba78068805661b93a5c}
乌镇峰会种图
直接下载下来的就是一张图片?
老套路,大家都懂
就这,就这?flag{97314e7864a8f62627b26f3f998c37f1}
那我们要向高难度挑战,我要做Web题
[HCTF 2018]WarmUp 【WEB】
说时迟那时快
我已经打开靶机了
然后进入靶机,我们只剩下滑稽🤪
既然是代码审计,直接打开F12
往网址加入被隐藏的source.php
之后我们就可以看到代码了
然后我们再次跳转到hint.php
没有flag,我们重新回去审计代码
1 | if (! empty($_REQUEST['file']) //$_REQUEST['file']值非空 |
这段代码告诉们需要满足三个条件
- 值为非空
- 值为字符串
- 能够通过checkFile()函数校验
否则打印滑稽🤪
查看上面那段的判断函数
1 | highlight_file(__FILE__); //打印代码 |
我们会发现里面含有四个if判断语句
- 第一个 if 语句对变量进行检验,要求
$page为字符串,否则返回false - 第二个 if 语句判断
$page是否存在于$whitelist数组中,存在则返回true - 第三个 if 语句判断截取后的
$page是否存在于$whitelist数组中,截取$page中'?'前部分,存在则返回true - 第四个if语句判断url解码并截取后的
$page是否存在于$whitelist中,存在则返回true
若以上四个 if 语句均未返回值,则返回false
有三个 if 语句可以返回true,第二个语句直接判断$page,不可用
第三个语句截取'?'前部分,由于?被后部分被解析为get方式提交的参数,也不可利用
第四个 if 语句中,先进行 url 解码再截取,因此我们可以将?经过两次url编码,在服务器端提取参数时解码一次,checkFile函数中解码一次,仍会解码为'?',仍可通过第四个if语句校验。('?'两次编码值为'%253f')
构造url:
1 | http://<domain>:<port>/source.php?file=source.php%253f../../../../../ffffllllaaaagggg |
最后得到我们的flag{a67df2fc-6608-4e8a-93dc-e7b328136308}
结语
Emmm,看来是我太狂了,最后一题做到头皮发麻。
代码能力还是要继续加强了。
