首页
社区
课程
招聘
KCTF 2026题目提交
发表于: 2026-8-5 10:59 65

KCTF 2026题目提交

2026-8-5 10:59
65

战队名称:天外星系
战队创建者:geekfire
题目名称:AntiAi
运行环境:windows
输出提示:答案正确则输出提示ok



题目设计思路

AntiAi 是一题 Windows 本地逆向题。它把 26 字节输入校验置于自定义 VM 中,以加密字节码、状态相关控制流、动态分派、完整诱饵路径和运行时完整性检查,避免选手仅凭字符串检索、单点比较或修改一个条件跳转完成题目。


AntiAi 的关键设计是“四世界执行记录承诺”(four-world transcript commitment):


- 每个候选输入均执行 4 条物理打包入口:1 条真实世界和 3 条完整诱饵世界。

- 每个世界拥有独立而自洽的状态、路由、流值、终止 PC 和 8 字摘要。孤立地跟踪诱饵时,它会表现为可信的本地有效轨迹。

- 最终成功不取决于任一世界的局部 `bad` 值,而是把四条完整 trace(包含累计故障/失配字)混合成 4 个承诺 DWORD,并与加密目标比较。

- 因而强制进入诱饵入口、跳过局部比较、篡改一段 VM 密文或在调试中造成迟到故障,都无法得到真实输入的全局承诺。


预期解法是还原解释器、解密并理解路径/状态依赖,然后重建约束恢复真实输入。

stdin

  │  读取、零初始化、去掉最多一个行结束符

  ▼

原始输入 ─► 26 字节规范化 ─► 8 轮扩散 ─► 32 字节 VM 值与 12 位 tag

  │                                                       │

  │                                                       └► 派生世界运行顺序

  ▼

VM 密文 seal + 当前 PE 的 .text seal

  │

  ├─► 世界 0:入口解封 → VM 解释 → 本地 trace

  ├─► 世界 1:入口解封 → VM 解释 → 本地 trace

  ├─► 世界 2:入口解封 → VM 解释 → 本地 trace

  └─► 世界 3:入口解封 → VM 解释 → 本地 trace

                                              │

                                              ▼

                 state / flow / route / PC / 步数 / digest / fault

                                              │

                                              ▼

                    4 个 trace 混合为 4 字跨世界承诺

                                              │

                           原始长度失配在此阶段并入

                                              ▼

                       比对加密目标并输出响应字


正确答案为:

flag{v4_opaque_trace_2026}



冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。

最后于 12小时前 被kanxue编辑 ,原因:
上传的附件:
收藏
免费 1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回