WeChall - Disclosures

Challenge

URL: https://www.wechall.net/en/challenge/dloser/disclosures/index.php

题面说 Minihack 发生安全事件,dloser 设法登录成 Admin。页面提供 viewer.php,可以查看 Minihack 文件源码。

已确认源码入口

Minihack 实际文件位于 challenge 的 www/ 目录。通过 www/viewer.php?f=... 已经读取到:

  • config.php:加载 secrets.php、GWF3 配置、Minihack 的用户/数据库/quirks 文件;
  • admin.php:调用 dldc_is_admin(),非 admin 返回 Permission denied!
  • login.php:明确禁止用户名 administrator,其他用户名进入 dldc_login()
  • home.php:展示 Minihack 首页。

viewer.php?f=home.php 的返回内容确认是服务器端 PHP source disclosure,而不是普通静态文件下载。

题面线索

现有 draft 记录的论坛 hint 包含 eval 以及 stripos && strlen。这两个关键词应当在 Minihack 的实际 user.phplib.phpchallenge_quirks.php 和 profile/registration 流程中逐一定位,不能只凭关键词猜 payload。

优先检查:

  • dldc_is_admin() 如何判断 session/user 属性;
  • dldc_login() 对 username/password 的处理;
  • stripos() 返回 0 或 false 时是否进入错误分支;
  • strlen() 检查前后是否发生编码转换;
  • eval() 的输入是否能被用户控制。

当前状态

未解决。源码泄露入口已确认,但完整 auth/session exploit chain 尚未复现,也没有提交管理员登录后的 solution。

后续路线

继续使用 www/viewer.php 只读枚举源文件,先把 user.phplib.phpdb.phpchallenge_quirks.php 和注册/个人资料页面拼成完整数据流,再构造最小请求验证 admin 条件。