首页
社区
课程
招聘
[原创] KCTF2025 - 第一题签到 题解 (MCP自动化解题讨论)
发表于: 2025-8-16 05:47 323

[原创] KCTF2025 - 第一题签到 题解 (MCP自动化解题讨论)

2025-8-16 05:47
323

人工签到法:

直接使用 Shift + F12 搜索字符串来定位关键 check;低版本 IDA 虽然不一定能直接识别中文,但如果能看到 FLAG 字符串,同样可以跟进到相关函数。
找到判断函数后进入,可以看到逐字符的明文比较逻辑。依次记录并 R 拼接字符即可得到 flag。
这次笔者用人工方式完成签到,但比首位解出 flag 的星盟师傅慢了 18 秒,略感遗憾。

自动化签到:

TL;DR

虽然只是签到题,但使用 MCP 只需一次点击运行,大约 1 分钟即可得出 flag,全程无需交互。
图片描述

引子

最近有一张流传甚广的资深 CTF 选手 kyle的截图,大意是 DEFCON 的上有的队用AI杀疯了,AI 解(某些)题的速度完爆顶尖 CTF 手,新的时代或许来了。 (然后这个截图引出了一堆 drama 讨论)

后续还有 shellfish 的佬发了他们用 MCP 秒 DEFCON AD 题目的 Writeup:
7f6K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4K9h3I4Y4K9h3u0T1M7#2)9J5k6h3y4G2L8g2)9J5c8X3u0D9L8$3N6Q4x3V1k6V1k6h3k6U0L8$3&6Q4x3X3c8X3K9h3&6S2L8s2y4Q4x3X3c8E0j5%4m8Q4x3V1j5`.

笔者今年在 DEFCON 上也多次亲身体验到被 AI“碾压”的场景,因此笔者对当前 LLM 的分析能力和准确率感到颇为震惊。
相比之下,早期版本(如 GPT-4 )幻觉往往十分严重,对于大型任务也经常会做到一半放弃。于是笔者好奇,这是否与前几天刚发布的 GPT-5 有关。或许它在自动化逆向方面比此前版本有了质的提升。

环境准备

这里笔者随便选了一个比较火的 IDA-MCP 框架:
48aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6E0M7X3g2^5L8$3c8A6j5g2)9J5c8X3W2V1j5g2)9J5k6s2m8J5L8#2)9J5k6r3#2U0M7q4)9J5c8R3`.`.

环境搭建相当简单。笔者使用 VS Code 作为聊天窗口,Copilot 对 GPT-5 接口的支持也较为友好(近期任何 GitHub 账号均可试用该接口,不需要激活 copilot;普通 OpenAI 用户想使用旗舰/新版本 API 的流式输出则需要通过 KYC 验证,美国人真坏啊)。
在新电脑上只需要:

就可以开始简单玩 IDA MCP 了

牛刀小试

IDA 打开题目附件,启动 MCP 插件,然后在 VS Code 新建一个 Chat 窗口即可开始解题。

可以看到 MCP 工作很流畅,并且似乎没有什么无关的分析
图片描述
大概跑了五分钟就给出了最后的报告,笔者认为质量还是非常高的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Crackme analysis report
Summary
 
Target: PE32+ crackme (Rust) at checkin.exe (metadata captured).
Goal: locate and analyze the serial/flag check routine and report the result.
Checklist
 
Inspect decompilation and add comments with findings — Done
Rename functions/variables to sensible names — Proposed in Key functions
Adjust types/args if necessary — Not required beyond notes
Disassemble additional functions when needed — Decompiled helpers as needed
Create report.md — Attempted but could not save to workspace; content included here
Prompt user with flag/serial found — Done
Actions taken
 
Queried IDB metadata, function list, and strings via MCP.
Located user-facing strings: "Welcome to KCTF 2025!\n", Chinese prompt, and "FLAG: ".
Cross-referenced these strings -> identified sub_140001620 as the input/validation driver.
Decompiled sub_140001620 and helpers.
Decompiled and inspected the boolean validator sub_140001560 and confirmed the literal match.
Assembled results and extracted flag.
Key functions (renames and purpose)
 
sub_140001620 -> parse_and_validate_input
Reads input, normalizes UTF-8, extracts token, calls validator, prints success/failure messages.
sub_140001560 -> is_correct_flag
Exact byte-wise equality against a 25-byte literal.
Decompiled logic (expressed): check length == 25 and bytes equal: 'f' 'l' 'a' 'g' '{' 'k' 'c' 't' 'f' '' 't' 'i' 'm' 'e' '' 'l' 'e' 'a' 'p' '_' '2' '0' '2' '5' '}'
sub_140001480 -> wrapper to sub_14008E1E0 (printing/format helper)
sub_140001B50 -> cleanup thunk calling sub_14003FDB0
Flag / Serial found
 
flag{kctf_time_leap_2025}

随后笔者又试了 GPT-4.1 ,这里需要加提示词让它不要停不然(在笔者这里) LLM 会反复向用户询问接下来怎么做,4.1可能是更轻量的缘故,更快分析出了 flag ,但 token 消耗非常惊人,如果使用自有 API Key,很容易达到每分钟请求上限。
图片描述

后记

GPT-4 在分析过程中还总是从入口函数开始逐步探索,虽然作为签到题仍能找到 flag,但从报告和过程来看,整体效率与思路不及 GPT-5;在稍复杂的题目中,或许难以在合理的 token 消耗下完成任务。

相比之下,GPT-5 的策略更贴近人类逆向思路:先检索字符串,通过交叉引用定位到 flag 校验函数,然后仅反编译必要的部分即可完成任务。
(包括在这次 DEFCON 中也能看出,GPT-5 会说“这看起来很难,但因为这是 CTF 题,所以应该存在一种合理的解法,让我们再思考一下”,然而之前早期版本笔者总需要提醒 LLM 不要放弃 Never gonna give you up,并且提示 LLM 一些做题的基础思路)

LLM 大概不是万能的,但在逆向这类包含大量重复性操作、需要快速编写脚本和批量分析的任务中,虽然笔者一直不喜欢 LLM 笔者认为或许 LLM(尤其是迭代迅速的最新版本)有潜力迅速超越传统方法,成为必备的效率工具。

此外,社区也在探索与动态调试工具结合的 MCP 方案,例如 retR0 的 pwno-mcp:
386K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6H3N6$3&6G2i4K6u0V1K9h3!0Q4x3V1k6H3N6$3&6G2i4K6u0V1L8h3y4H3

结合 GPT-5 的表现,笔者对 LLM 辅助安全研究的前景持相当乐观的态度

这里也期待今年 KCTF 挑战会带来更多有趣的对比与探索


传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2025-9-4 14:35 被只管出不管做编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回