前言
去年做了RoarCTF线上赛题。只做出一道MISC题。去年已经把MISC题黄金6年和Web题Easy Calc总结并复现了一下。
现在才发现忘记发博客了。。尴尬。。( 其他题有时间会复现)
MISC:黄金6年
下载之后,发现是个mp4文件。用WinHex打开分析一下
很明显这串字符有问题,好像是Base64编码。Base64解码
结果发现个rar压缩包的文件头。所以Base64解码以16进制显示得到
526172211a0701003392b5e50a01050600050101808000e1ede9395502033cb00004a100204bec529180030008666c61672e747874300100030f1e371f239d2cc1967c213d584b01669ac0250a01495956909352f533f976eda4c89dbbe49cec368dbd0674990a0302de1f94155f69d5011f26404f3d1e8cad8c179ac302333ebb0cdfe4e6ed4d630f606b9ddaf37fc1fedd86f45906fc8213b91fbd808bebfcb11d77565103050400
放WinHex里,生成一个rar压缩包。打开发现需要密码
想到mp4视频里是不是还有东西。用ffmpeg提取mp4的音频,分析无果。然后想到对视频逐帧分析,但当时我没想到用Pr。
这四张有二维码,扫描得key:iwantplayctf
输入key解压rar压缩包,得到flag。
Web:Easy Calc
这道题是国赛的love_math的修改版。当时我拿着love_math的wp进行复现,结果一直没成功。现在看这道题的wp,发现要用到服务器存在http走私漏洞,用来绕waf。因为我没学习过http走私漏洞。所以学习一下。
参考:
协议层的攻击——HTTP请求走私
这里用到几个php几个数学函数。
我们首先要构造列目录的payload,肯定要使用scandir
函数,尝试构造列举根目录下的文件。
scandir
可以用base_convert
函数构造,但是利用base_convert
只能解决a~z
的利用,因为根目录需要/符号,且不在a~z
,所以需要hex2bin(dechex(47))
这种构造方式,dechex()
函数把十进制数转换为十六进制数。hex2bin()
函数把十六进制值的字符串转换为 ASCII字符。
题目总结参考我之前博客:从一道题到HTTP请求走私