Handoff / handoffnew 的 Stage 1、2、3 已在 judge 记分,共 45 分;Stage 4、5 没有通过记录,完整 flag 未取得。最大的收获是把“展示成谁”和“实际能访问谁的资源”拆开,最大的坑则是把旧版 mock 的行为带到新版线上。
协议与计分
平台的 nc 入口实际承载 TLS 和 JSON-lines。明文连接 EOF 不能直接判为实例宕机;需要先区分明文/TLS、代理接受连接和后端真正返回 JSON。
| 阶段 | 结果 |
|---|---|
| Stage 1:状态机与 MAC 构造 | 10 分 |
| Stage 2:RETRY 身份语义问题 | 15 分 |
| Stage 3:MIGRATE export 非授权调用 | 20 分 |
| Stage 4:完整 exploit | 未通过 |
| Stage 5:修复实现 | 未通过 |
消息预算为 400,SUBMIT 每次消耗 5。Stage 4 会在三轮新实例中运行提交脚本,至少两轮输出 flag 才通过,不能用一次本地输出替代判题。
正常登录链与 MAC 编码
正常流程是 REGISTER → CHAL → AUTH → OPEN → ACCESS。MAC 使用 HMAC-SHA256,各字段先加四字节大端长度再拼接,不能简单拼字符串。
1 | CHL: id, ns |
这里的标签也是 MAC 输入的一部分。CHAL 返回的 sproof 可以辅助校验自己的编码是否正确。
RETRY 的身份错位
RETRY 用当前会话所属身份及密钥校验 MAC,却把请求携带的 id 用于更新会话展示身份。于是以自己的密钥签名,也能把展示身份改成 ops,随后通过只检查 ops 的 MIGRATE export 门槛。
1 | 注册普通身份 u |
这条链足以说明 Stage 2、3 的问题,但还没有让 ACCESS 返回 flagadmin 的受保护资源。
新版线上有两个身份
| 身份 | 从哪里设置 | 哪个环节使用 |
|---|---|---|
| 绑定身份 | OPEN,或迁移 commit 回填 | ACCESS |
| 展示身份 | RETRY | MIGRATE export 门控 |
后期实测每会话只能成功 RETRY 一次;ACCESS 仍认绑定身份。早期“用户之间连续多跳,再进入 flagadmin”的观察不能当成新版的稳定利用链。
commit 可以把迁移记录的 identity 回填为绑定身份,但 export 的门控要求展示身份是 ops,产出的记录 identity 也只能是 ops。要访问 flagadmin,缺的正是一条能产出 flagadmin 迁移记录的路径。
已排除的路径
- 给 export 或 commit 添加 identity、id、as、target 等覆盖字段,没有得到想要的记录身份。
- 第二次 RETRY 在不同密钥和字段组合下仍 invalid。
- 导出 blob 中的 32 字节值是 OPEN 断言,不能直接当作下一跳密钥。
- 同一 sid 在新连接中可重新 OPEN,但迁移记录并不跨连接共享。
- discard 后 commit、历史记录边界探测等,没有构成最终提权链。
- commit 后再次 export 仍看到旧 OPEN 断言,没有拿到可用于 flagadmin 的新断言。
这些是当时所测变体的结果,不是对协议所有可能路径的穷尽证明。
Stage 4 的提交问题
第一次提交为 0/3,其中存在 TLS 向明文回退的问题:在同一条连接上先发 ClientHello,会污染实际为明文的实例。修复后,旧版 mock 可输出测试 flag,但线上 judge 随后离线,未取得通过回执。
flag{mock_...} 是本地测试产物。即使修复传输错误,也仍需验证新版身份限制,不能把网络适配完成写成完整 exploit 已通过。
Stage 5 所需 Simulator 接口与手头旧 handout 存在差异,尚未完成兼容修复和判题。
继续做时的顺序
- 对照目标实例版本与 handout,确认一次性 RETRY、身份字段及迁移记录生命周期。
- 保存每次请求的预算与完整响应,用最少操作复现 Stage 1—3。
- 优先找合法产生 flagadmin 记录的路径,避免继续猜没有证据的覆盖字段。
- 用新版行为建立本地模型后再提交 Stage 4,保留 judge 的轮次结果。
资料来源
以 HANDOFF_STATUS.md 的 10 月 31 日 20:30、21:00 更新和当日会话为准;旧 handoff/NOTES.md 与早期 WP 中的多跳结论仅作为过程记录。本文不附 mock flag,也不声称 Stage 4、5 已完成。
本文作者 Allureluoli
文字版权归作者所有,转载请注明出处;商业用途请先联系二月。