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-authcookie 注入)后仍 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/gwf3 的
Mawekl/what_is_your_name/who.php。审计重点:
ob_start('honeypot',4096)回调str_replace('mawekl','Mawekl',$buff)只美化输出,不改 session- honeypot
检查:
$honeypot = ($_GET['honeypot'] * 1337) + 1.7;需满足!preg_match('/[^0-9.E+]/', (string)$honeypot):数值字符串只能含 0-9 . E +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)arrayTypeError 理论上可行,但服务器 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/。