WeChall - What is your Name?

Challenge

这题名字像 cracking,实际公开源码显示是 PHP/source-audit 题。目标是让 who.php 输出 Welcome Mawekl! Password is ...

现状(2026-08-10 调查):挑战已坏,who.php 不可达

核心文件 who.php 在线上服务器被 Apache 层硬封(HTTP 404),无法触发 session 流程,flag 无法获取:

  • URL 全变体均 404:/en/challenge/Mawekl/what_is_your_name/who.php/challenge/...、ID 式 /challenge/126/...、PATH_INFO、URL 编码、大小写、POST
  • 通道全试过:裸 curl、完整浏览器头 curl、本地 Playwright(headless/headed @Xvfb)、browserbase、wc2 镜像、直连 IP
  • 甚至过了 Anubis PoW(techaro.lol-anubis-auth cookie 注入)后仍 404:是 Apache 规则而非反爬
  • 同目录其他文件正常:install.php(执行)、lang/chall_en.php(执行)、index.php?show=source(file_get_contents 能读到 who.php 全文 → 文件存在,仅被访问规则屏蔽)
  • 提交通道正常:POST 假答案返回 "Doh', Your answer seems wrong!"(正常 wrong 响应)

旁证:管理员 quangntenemy 2026-07-17 论坛发帖 "It is broken. I tried wrzlbrmpft and it didn't work"(forum-t1921);最近一次 solved 是 2022-09-04。2025-09~11 论坛还有讨论("challenge still works"),服务器迁移(Apache/2.4.58 Ubuntu 新机)后 broken。

解法分析(who.php 可达时的路线,留档)

关键文件在 gizmore/gwf3Mawekl/what_is_your_name/who.php。审计重点:

  • ob_start('honeypot',4096) 回调 str_replace('mawekl','Mawekl',$buff) 只美化输出,不改 session
  • honeypot 检查:$honeypot = ($_GET['honeypot'] * 1337) + 1.7; 需满足
    1. !preg_match('/[^0-9.E+]/', (string)$honeypot):数值字符串只能含 0-9 . E +
    2. is_float((int)round($honeypot) - 33):大浮点 (int) 溢出 → PHP_INT_MIN → -33 溢出为 float → true
    • 64 位:honeypot=9223372036854775807;32 位:2147483647;或 1e305(1.337E+308 串合规 + round 溢出)
  • 陷阱:who=mawekl(小写)只被输出缓冲美化成 "Mawekl",session 仍为 'mawekl',严格比较 === 不过
  • 未解之谜(2025 论坛 XORci5t 等人也卡住):honeypot 通过后 session='Mawekl',但随后的 who 检查必然覆盖(who=='Mawekl' → STRANGER;否则 → $who)。唯一出路是让脚本在 honeypot 赋值后、who 覆盖前终止(PHP 8 的 (string)array TypeError 理论上可行,但服务器 PHP 版本未知/已迁移)。tehron 回复 "concentrate on the question how it could be even possible":官方暗示存在巧妙解法,需 who.php 恢复后实测
  • flag 为 WC_CryptoChall::generateSolution(md5(random.random.username.salt.random) 截取),salt 为安装时随机(GWF_CHALLENGE_SALT),离线不可算

恢复条件

需要 WeChall 管理员修复 who.php 的 Apache 访问规则(或迁移时丢文件的问题)。恢复后验证脚本在 <ctf-workspace>/challenges/wechall/solve-what-is-your-name/