逆向工程实战手册 第 51 章

第 51 章 CTF 比赛实战策略(赛前 / 赛中 / 赛后)

前面章节教你"解题",本章教你"赢比赛":赛前准备什么、赛中怎么分配时间、怎么和队友配合、常见陷阱与心态。CTF 不仅是技术,更是项目管理。

📍 知识点地图 | 主题:CTF比赛策略 | 前置:第16章 | 后续:— | 核心概念:赛制、时间分配、团队、复盘

51.1 CTF 比赛形态(先懂赛制)

赛制 规则 特点
Jeopardy(解题制) 各题独立,解出拿分 主流,适合入门
Attack-Defense(攻防) 各队维护服务+互相攻击 进阶,配合关键
King of the Hill(占山) 抢占服务控制权 攻防混合
Mixed 混合 综合

新手建议:先从 Jeopardy 的 Reverse/Pwn/Misc 入手(单点突破),再进 Attack-Defense。

51.2 赛前准备(赢在开局)

环境清单(比赛前装好)

□ 主力环境: Kali/Ubuntu + 常用工具(第 2 章清单)
□ 逆向: radare2/IDA/Ghidra/Frida/angr/Unicorn/z3
□ Pwn: pwntools/pwndbg/ROPgadget/one_gadget/libc-database
□ 加密: CyberChef/Ciphey/hashcat/RsaCtfTool
□ 网络: Wireshark/tshark
□ 自动化: 自己的解题脚本库(常用函数/模板)
□ 备份: 工具配置 + 脚本库 + 笔记同步

知识检查单

□ 每类题目的标准流程(本书各章即清单)
□ 常见 flag 格式识别(flag{...} / CTF{...} / 自定义)
□ 常用脚本模板(XOR 破解/反查表/angr 模板/密码爆破)
□ 团队沟通方式(语音+共享文档)
□ 分工预案(谁负责哪类题)

51.3 赛中策略(时间与优先级)

时间分配黄金法则

1. 快速捡漏轮(开场 30 分钟):
   全队扫所有题 → 找最简单的几道 → 快速拿分
   逆向题: strings/直接运行/ltrace(第 1 章快速捡漏)
2. 主力攻坚(30 分钟 - 2 小时):
   按分工集中火力(每人 1-2 类题)
   每道题设 30 分钟死线 → 超时换人或换题
3. 收尾冲刺(最后 1-2 小时):
   清掉所有"差一点"的题
   复查提交格式/flag 格式

抢分优先级判断

□ 已开 5 分钟内出的题 → 秒杀(很多题是送的)
□ 已有进展的题 → 继续(避免半途而废)
□ 卡 30 分钟+ 无进展 → 记录思路,换题,回头再看
□ 冷门知识点题目 → 留给有知识储备的人
□ 分数/难度不对等时 → 先做性价比高的

51.4 团队配合(人多≠快)

角色分工(建议):
  RE 手: 逆向/加密/取证类
  Pwn 手: 栈/堆/内核
  Web 手: Web/API
  Crypto 手: 密码学
  (新手队: 按题型分配,而不是按人分)

配合要点:
  □ 共享平台(Notion/语雀/白板): 每题一页记录思路/进展/卡点
  □ 独立研究 + 定期同步(每 30-60 分钟对表)
  □ 卡住的题及时"交接"(换人换视角)
  □ 资源复用: 一个 flag 解出 → 其他题可能用同样思路
  □ 每题记录命令和产出(赛后复盘素材)

51.5 常见陷阱与心态

题目陷阱(逆向题常见)

□ 诱饵 flag(多个假目标,第 16 章)
□ 反调试误导(Qiling 秒解)
□ 输入约束隐藏(长度/格式)
□ 编码差异(大小端/编码)
□ 环境依赖(时间/随机数)
□ 多阶段(前面解出的不是 flag,是下一步线索)

心态陷阱

□ 死磕单题: 30 分钟无进展必须换(时间就是分数)
□ 不记录: 解的每步不写下来 → 断了思路重来
□ 不分享: 藏着线索不交流(团队大忌)
□ 焦虑: 别人出分自己没出 → 正常,先拿稳定分
□ 迷信工具: 该手算/手推的题浪费时间上工具

51.6 赛后复盘(涨分最快的环节)

复盘模板:
  1. 每题: 思路 → 卡点 → 解法 → 用时
  2. 团队: 分工是否合理 → 沟通是否高效
  3. 能力: 哪类题弱 → 下次前重点补
  4. 知识: 新知识点记录 → 进自己的案例库(第 20 章)
  5. 流程: 时间分配/换题机制是否执行

产出:
  writeup(分享/存档,写作也是学习)
  更新脚本库/模板(把新套路固化成工具)
  更新知识地图(第 23 章)标出强弱项

51.7 新手参赛建议(第一次比赛)

1. 先打一场小型/入门赛(picoCTF/校内赛)
2. 目标是"体验流程"而不是"名次"
3. 提前 1 小时进场调试环境
4. 带上:工具清单+笔记+解题模板
5. 赛后必复盘(第 51.6 模板)
6. 比赛频率: 每月 1-2 场,比刷题涨得快

51.8 常用资源速查

找比赛: CTFtime(第 21 章)
入门练习: picoCTF / buuoj / 攻防世界(第 21 章)
逆向专项: crackmes.one / Reversing.kr / Root-me
Pwn 专项: pwnable.kr / pwnable.tw / how2heap
复盘: CTFtime writeup 区 / 先知社区

动手练习

  1. 组一场 2 小时的模拟赛(从 buuoj 选 5 题),严格执行 51.3 的时间纪律。
  2. 写一份自己的"赛前环境检查单"并实际走一遍。
  3. 复盘你最近一次解题:如果按"30 分钟死线"策略,哪一步可以更快?
  4. 为你的团队(或你自己)建立一个题目记录模板,下次比赛直接用。

深入阅读

  • 仓库:CTF-Sandbox-Orchestrator/ctf-sandbox-orchestrator/SKILL.md(比赛总控路由)
  • 仓库:CTF-Sandbox-Orchestrator/ctf-sandbox-orchestrator/references/ctf-resources-digest.md(CTF 资源摘要)
  • 仓库:skills/field-journal/_template.md(复盘模板)
  • 仓库:skills/docs-generator/(writeup 生成)
  • 仓库:skills/reverse-engineering/patterns-ctf*.md(题型模式库)