首页
1、先用扫描器扫一下目录,通过尝试发现了有价值的东西www.tar.gz
2、审计源码,通过浏览目录发现如下:
看下 tp5/application/web/controller/Index.php 中的代码,我们可以看到login_check 方法, 这个方法从 cookie 中获取字符串,并将其反序列化。所以可以反序列化任意类。
审计load.php,并没有发现有什么可利用的。
接下来审计profile.php, 在 upload_img 方法中有上传文件复制操作,而这个操作中的 $this->ext、$this->filename_tmp、$this->filename 均可通过反序列化控制。
如果我们能调用 upload_img 这一方法,在知道图片路径的情况下,就可以任意重命名图片文件,可以考虑和图片码相结合。
在 Profile.php 文件末尾还有两个魔术方法,其中 $this->except 在反序列化时可控,这一就有可能通过 __call 调用任意类方法。继续看 Register.php 中是否存在可以触发 __call 方法的地方
可以看到 tp5/application/web/controller/Register.php 文件中存在 __destruct 方法,其 $this->registed、$this->checker 在反序列化时也是可控的。
如果我们将 $this->checker 赋值为 Register 类,而 Register 类没有 index 方法,所以调用的时候就会触发 __call 方法,这样就形成了一条完整的攻击链。
最终用下面生成的 EXP 作为 cookies 访问网页,即可将原来上传的图片名字修改成 shell.php ,依次找 flag 即可。
1 | <?php |
这道题后面的代码审计是看着博客做的,前面的步骤倒是被我瞎猫碰上死耗子撞上了。
参考链接:https://xz.aliyun.com/t/5282