写在前面
上周末的SUCTF里有道题 EasyPHP, 看到有许多小伙伴在尝试使用蚁剑的 「Bypass Disable_functions」插件,却没有成功,然后今天加了 fsocks 方式,可以很顺畅的 getflag 了。于是就有了这篇文章。
正文
题目是这样的:
getshell 不是本文的重点, 所以我就快速代过了,详细的 writeup 请关注 「ChaMd5 安全团队」微信公众号 (广告费5毛)
一顿操作,getshell 之后,发现需要绕过 open_basedir 。
然后我在服务器上面看到了一堆的 ant_x64.so (实际上比图里的要多,因为我偷偷删了) 但是大家好像都没成功
看一下 putenv 和 error_reporting 是可以用的,所以我们选择 LD_PRELOAD 方式:
实际上呢,插件执行 php 命令是执行成功了的,只是代理脚本出了些问题导致没能一次成功,可以看一下都有多少人执行成功但没连上来:
失败的原因就是之前的插件的代理脚本里使用的是 curl 来进行转发的,这个环境里没有这个扩展:
于是改用 fsockopen 实现的代理脚本
然后就没问题了
想了想,把 fsock 方式也融合进了插件里。最后我们放一段连贯操作, 使用已经更新过的插件 v0.5 (没更新的快更新):
另外再说一下我当时是怎么做这个题的,偷了个懒
在插件写php路径的地方,填写的 php,实际到ant.so 里是拼了一条命令
所以,用命令注入的思路,就能拿到想要的结果了
写在后面
不过过度依赖工具,搞懂原理最重要,至于怎么实现,看个人想法。
不如关注一波再走?