关于 ctf-writeup
ctf-writeup 是用于为已解决的 CTF 挑战生成标准提交式 writeup 的技能,面向参赛者和队友。它强调简短、可复现的解题步骤,并建议提供从题目数据到 flag 的完整脚本。
主要功能
- 01收集题目元数据与解题材料
- 02生成标准提交式 writeup
- 03整理为简短解题步骤
- 04检查脚本可运行性与复现性
- 05核对格式、工具版本与署名
适用场景
- 01为已解出的挑战整理提交说明
- 02制作队友或组织者可快速验证的记录
- 03将零散脚本和输出整理成完整解法
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ ljagiello/ ctf-skills --skill ctf-writeup安装后在 Claude Code 中输入/ctf-writeup确认已加载。
详细介绍
CTF 解题报告生成器
为已解出的挑战生成标准化的提交式 CTF 解题报告。
默认行为:
- 比赛进行期间,优先考虑速度、清晰度和可复现性
- 解题报告应足够简短,方便队友或组织者快速验证解法
- 始终生成
submission风格的解题报告 - 优先提供一个完整的解题脚本,从挑战数据直接得出最终 flag
工作流
第 1 步:收集信息
从当前会话、挑战文件和用户输入中收集以下信息:
- 挑战元数据 — 名称、CTF 活动、类别、难度、分值、flag 格式
- 解题材料 — 漏洞利用脚本、载荷、截图、命令输出
- 时间线 — 关键步骤、走不通的方向、思路转变
# Scan for exploit scripts and artifacts
find . -name '*.py' -o -name '*.sh' -o -name 'exploit*' -o -name 'solve*' | head -20
# Check for flags in output files
grep -rniE '(flag|ctf|eno|htb|pico)\{' . 2>/dev/null
第 2 步:生成解题报告
按照下方的提交模板,将解题报告写入 writeup.md(或 writeup-<challenge-name>.md)。
模板
提交格式
---
title: "<Challenge Name>"
ctf: "<CTF Event Name>"
date: YYYY-MM-DD
category: web|pwn|crypto|reverse|forensics|osint|malware|misc|ai-ml
difficulty: easy|medium|hard
points: <number>
flag_format: "flag{...}"
author: "<your name or team>"
---
# <Challenge Name>
## Summary
<1-2 sentences: what the challenge was and the core technique. Keep it direct.>
## Solution
### Step 1: <Action>
<Explain the key observation in 3-8 short lines. Keep it direct.>
\`\`\`python
<one complete solving script from provided challenge data to printing the final flag>
\`\`\`
### Step 2: <Action> (optional)
<Only add this when a second short step genuinely helps readability, such as separating the core observation from final verification.>
### Step 3: <Action> (optional)
<Use only if the challenge really needs it. Keep the total number of steps small.>
## Flag
\`\`\`
flag{example_flag_here}
\`\`\`
指南:
- 总共最好不超过 1–3 个简短步骤
- 代码应尽可能精简,但仍是完整的解题脚本
- 不要将“还原秘密”“推导密钥”和“解密 flag”拆成多个片段
- 脚本应从挑战数据开始,最终打印 flag
- 避免冗长的背景介绍
- 除非能说明关键思路转变,否则不要提及走不通的方向
- 避免提供多种备选解法;选择一条清晰的路径
- 只有用户明确要求隐去 flag 时才对其进行处理
最佳实践检查清单
完成解题报告前,请确认:
- 元数据完整 — 标题、CTF、日期、类别、难度、分值和作者均已填写
- flag 处理符合要求 — 保留真实 flag,除非用户要求隐去
- 步骤可复现 — 读者可以按照报告操作并复现解法
- 代码可运行 — 漏洞利用脚本包含所有导入语句、正确的变量名和注释
- 不含敏感数据 — 不包含真实凭据、API 密钥或私有基础设施细节
- 长度简洁 — 解题报告足够简短,便于快速审阅
- 注明工具和版本 — 如果行为取决于特定工具版本,请注明
- 正确注明出处 — 致谢队友、引用的解题报告或关键工具
- 语法和格式正确 — 标题级别一致,代码块标注语言
质量指南
应当:
- 只解释足以快速验证的内容
- 提供一条完整的解题路径,而不是多种备选方案
- 提供一个完整脚本,一步到位得出最终 flag
- 展示实际输出(过长时可截断),证明解法有效
- 为代码块标注语言(
python、bash、sql等) - 将主要解题路径放在前面,方便读者快速验证
不要:
- 不加说明地粘贴原始终端输出
- 粘贴多个不完整片段,让读者自行拼出最终解法
- 在最终解题报告中留下占位文本
- 加入无助于解题的无关内容
- 假定读者了解该挑战的具体设置
挑战
$ARGUMENTS
评论
支持 Markdown