mcpField
C
ctf-writeup

ctf-writeup

github.com/ljagiello安全3.6k8.0k 次安装2 天前更新
代码仓库

关于 ctf-writeup

ctf-writeup 是用于为已解决的 CTF 挑战生成标准提交式 writeup 的技能,面向参赛者和队友。它强调简短、可复现的解题步骤,并建议提供从题目数据到 flag 的完整脚本。

主要功能

  1. 01收集题目元数据与解题材料
  2. 02生成标准提交式 writeup
  3. 03整理为简短解题步骤
  4. 04检查脚本可运行性与复现性
  5. 05核对格式、工具版本与署名

适用场景

  1. 01为已解出的挑战整理提交说明
  2. 02制作队友或组织者可快速验证的记录
  3. 03将零散脚本和输出整理成完整解法

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ljagiello/ctf-skills --skill ctf-writeup

安装后在 Claude Code 中输入/ctf-writeup确认已加载。

详细介绍

CTF 解题报告生成器

为已解出的挑战生成标准化的提交式 CTF 解题报告。

默认行为:

  • 比赛进行期间,优先考虑速度、清晰度和可复现性
  • 解题报告应足够简短,方便队友或组织者快速验证解法
  • 始终生成 submission 风格的解题报告
  • 优先提供一个完整的解题脚本,从挑战数据直接得出最终 flag

工作流

第 1 步:收集信息

从当前会话、挑战文件和用户输入中收集以下信息:

  1. 挑战元数据 — 名称、CTF 活动、类别、难度、分值、flag 格式
  2. 解题材料 — 漏洞利用脚本、载荷、截图、命令输出
  3. 时间线 — 关键步骤、走不通的方向、思路转变
# 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