news 2026/9/9 21:36:35

Fabric Pattern 深度解析:用 extract_ctf_writeup 把 CTF Writeup 一键提炼成结构化安全摘要

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Fabric Pattern 深度解析:用 extract_ctf_writeup 把 CTF Writeup 一键提炼成结构化安全摘要

Fabric Pattern 深度解析:用 extract_ctf_writeup 把 CTF Writeup 一键提炼成结构化安全摘要

【免费下载链接】FabricFabric is an open-source framework for augmenting humans using AI. It provides a modular system for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.项目地址: https://gitcode.com/GitHub_Trending/fa/Fabric

在渗透测试、漏洞赏金或 CTF 学习中,优质 Writeup 往往很长,通读一遍才能判断是否值得精读。本指南以 Fabric 仓库中的extract_ctf_writeup提示词模式为线索,逐段拆解其角色设定、四段式输出要求与约束规则,并结合仓库源码讲解该模式被 CLI 加载、与用户输入拼接的底层机制。读完你将掌握该模式的设计意图、可直接套用的调用方式,以及如何按需改造成属于自己的 Writeup 速读 Agent。

一、extract_ctf_writeup 是什么

extract_ctf_writeup是 Fabric 内置的一套 AI 提示词(Pattern),仓库源码位于 data/patterns/extract_ctf_writeup/system.md,同目录还附带了模式说明 data/patterns/extract_ctf_writeup/README.md。

从同目录 README 可以确认它的定位与典型场景:它面向“warstory 式”的网络安全实战叙述(即类似讲故事一般的攻击复盘文本),目的是生成一份可快速阅读的 CTF Writeup 摘要,帮助读者快速决定“这则完整 Writeup 值不值得我花时间读/看”。它抽取三方面内容:被利用的漏洞、文中出现的全部引用来源,以及整个 CTF 的攻击时间线。

从目录结构(data/patterns/下每个目录对应一个模式)与 README 中的作者署名(Author: Martin Riedel)可以看出,Fabric 的提示词是众包维护的独立数据资产——每个模式就是一个目录,目录内的system.md是系统提示词主体。这也正是该模式的全部“程序逻辑”:它不写死任何工具调用,而是通过精心设计的指令让通用大模型完成结构化抽取。

二、角色设定:资深安全老兵(IDENTITY and PURPOSE)

system.md的开头定义了模型要扮演的身份与写作使命:

  • 身份:一名经验丰富的网络安全老兵(seasoned cyber security veteran)。
  • 专长:擅长把复杂的技术攻击讲清楚,让不熟悉相关背景的人也能看懂。
  • 写作风格要求:先给出对攻击过程的简短总结,然后提供简洁、分步的讲解。
  • 执行策略:要求模型“退后一步”(Take a step back),按下面的步骤逐步思考,以获得最佳结果。

这段角色设定的设计价值在于:CTF Writeup 读者往往兼具“快速决策”与“入门学习”两种诉求,因此摘要既不能过度晦涩术语堆砌,也不能丢失技术细节。角色卡为后文的“先总结、再逐步骤展开”输出风格埋下了伏笔。

三、STEPS:四段式结构化抽取指令

这是该模式的核心骨架。system.md要求模型从输入文本中抽取并组织为四个固定章节,每一节都有明确的产出规格:

1. SUMMARY —— 50 词以内的管理层摘要

  • 对全文内容抽取一份少于 50 词的管理摘要。
  • 摘要必须包含两部分信息:发现的漏洞(Vulnerabilities)可借鉴的经验教训(learnings)

管理摘要服务于时间紧张的读者:他们只想用 10 秒确认“这个 Writeup 关不关我的事”。

2. VULNERABILITIES —— 漏洞清单

  • 列出所有被利用(exploited)的漏洞。
  • 若原文提到 CVE 编号,必须保留(assigned CVE if they are mentioned)。
  • 标注每个漏洞所属的漏洞类别/漏洞类型(class of vulnerability),如注入、越权、反序列化等。
  • 同时遵守总则中“不重复漏洞”的要求。

把漏洞抽成独立清单,方便读者按 CVE 或漏洞类别横向检索,也便于日后归档到自己的漏洞知识库。

3. TIMELINE —— 攻击时间线

  • 将演示的攻击过程整理成按时间先后排列的列表
  • 时间线应使用嵌套结构:主节点是攻击阶段,子列表是各阶段的具体步骤。
  • 必须尽量保留细节,包括使用的工具、文件路径、URL、版本信息等。

这一步是最有实操价值的:时间线把零散的“叙事流”变成可复现的步骤链,读者或新手可以在自己环境里照着验证每一步。

4. REFERENCES —— 全部引用来源

  • 提取演讲者/作者提及的所有工具、网站、文章、书籍、参考资料及其它信息来源。
  • 只要是文中提到的引用对象都应收录,不遗漏。

这相当于自动生成一份“延伸阅读清单”,帮助想深入研究同一主题的人按图索骥。

四、OUTPUT INSTRUCTIONS:硬性输出约束

除了抽取内容,该模式还用一条命令式的约束清单约束模型输出格式,避免摘要变成杂乱的口水话:

  • 只输出 Markdown
  • 不输出警告或备注,只输出要求的章节(对应四个固定节)。
  • 一律使用无序列表(bulleted lists),不要用有序列表(numbered lists)。
  • 不要重复已经列出的漏洞或引用。
  • 不要让各条目以相同开头词起始(避免机械罗列的“第一…第二…第三…”)。
  • 必须完整遵循以上所有指令

从提示词工程的角度,这几条约束分别解决不同问题:“只输出 Markdown”保证后续可被工具继续消费;“禁警告备注”防止模型画蛇添足;“无序列表”与“不重复/不同开头词”则显著提升摘要的扫读效率。这些要求共同保证了:输出是结构化、去冗余、可直接当文档用的 Markdown

五、INPUT:输入如何进入模式

system.md以一段INPUT:结束,表明接下来输入的原始文本是待分析的素材。实际使用中,你要把某篇 Writeup 的正文(或转录文本)交给它。

结合仓库源码可以看到这条输入路径的真实工作原理:

  • 模式内容存放在data/patterns/<name>/system.md,读取逻辑在 internal/plugins/db/fsdb/patterns.go 的getFromDB中:拼接patterns 目录/<模式名>/system.md后整体读入内存;
  • 之后进入 internal/plugins/db/fsdb/patterns.go 的applyVariables/ensureInput:若模式文本中不存在{{input}}占位符,代码会自动把占位符追加到文本末尾,再将你的输入内容替换进去(从源码结构看,最终发给模型的消息 = 完整的 system.md 提示词 + 你的 Writeup 正文)。

也就是说,哪怕你直接复制本文的提示词在任意 LLM 对话框中粘贴,把原 Writeup 文本接在INPUT:后发送,也能复现该模式的完整行为。

六、在 Fabric 中的真实调用方式

Fabric 把这类提示词管理成了标准 CLI 能力。以下用法均可在当前仓库中验证:

1. 查看内置模式是否可用

fabric --listpatterns

对应代码为 internal/cli/flags.go 中定义的-l, --listpatterns

2. 直接读取该模式的完整提示词内容

fabric --readpattern extract_ctf_writeup

对应PrintPattern实现(internal/plugins/db/fsdb/patterns.go),会把data/patterns/extract_ctf_writeup/system.md原样打印到终端。

3. 用管道传入 Writeup 文本并让模式处理

cat writeup.md | fabric -p extract_ctf_writeup

其中-p, --pattern用于“从可用模式中选择一个”(internal/cli/flags.go)。如果你想用该模式分析 YouTube 上的一则 CTF 讲解视频,也可配合转录类参数先把视频转成文本,再交给本模式抽取。

此外仓库还支持为特定模式指定专属模型:当你在命令行用了--pattern而未显式指定模型时,程序会检查FABRIC_MODEL_<模式名大写且连字符转下划线>这一环境变量(见 internal/cli/chat.go)。例如可设FABRIC_MODEL_EXTRACT_CTF_WRITEUP=openai|gpt-4o,让该模式固定走你偏好的模型。

七、模式的自定义与扩展

Fabric 的模式系统是可扩展的:用户可以把自己的模式放到自定义目录(CustomPatternsDir)中,同名时自定义版本优先覆盖内置版本,相关逻辑见 internal/plugins/db/fsdb/patterns.go。

extract_ctf_writeup为例,你可以按需派生自己的版本,例如:

  • 增加## 复现难度评估## 环境搭建要点等章节,前提是同步修改 OUTPUT INSTRUCTIONS 中的章节清单;
  • 调整 SUMMARY 的字数上限(如 30 词)或语言(要求输出中文);
  • 针对“红队报告”而非“CTF 教学 Writeup”改造角色卡,把“learnings”换成“检测与修复建议”;
  • 若在测试中发现模型重复漏洞条目,可进一步强化“Do not repeat vulnerabilities”约束。

无论怎样改写,都应保留该模式的经典骨架——角色卡设定清晰的目标读者、STEPS 给出确定的抽取任务、OUTPUT INSTRUCTIONS 锁死输出形态,这正是 Fabric 提示词模式能被众包复用的关键:每个模式都是一份可版本管理、可分享、可被他人直接调用的“提示词即资产”。

八、总结与适用场景

一句话概括extract_ctf_writeup的产出:< 50 词管理摘要 + 带 CVE/类别的漏洞清单 + 保留工具路径与版本号的分步时间线 + 完整引用来源,全部以去重的 Markdown 无序列表呈现。

它最适合以下场景:

  • 写作者将长篇 Writeup 压缩为可存档的速读卡片;
  • CTF 学习社区把投稿短文统一格式化为“摘要 + 漏洞 + 时间线 + 参考”的规范条目;
  • 安全团队用它把一份外部攻击复盘(含工具、URL、版本)快速结构化,用于情报比对或复现决策。

如果你想深入这套模式的机制本身,推荐继续阅读仓库内 internal/plugins/db/fsdb/patterns.go(模式加载与输入拼接)、internal/plugins/db/fsdb/db.go(默认system.md文件名配置),以及 internal/cli/flags.go(与模式相关的全部 CLI 参数),即可把这套“提示词即资产”的思路搬到自己的安全自动化流水线中。

【免费下载链接】FabricFabric is an open-source framework for augmenting humans using AI. It provides a modular system for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.项目地址: https://gitcode.com/GitHub_Trending/fa/Fabric

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 21:36:30

Selenium Web自动化测试实战:从环境搭建到pytest工程化

1. Web自动化测试选型&#xff1a;为什么我坚持用Selenium 1.1 新工具层出不穷&#xff0c;Selenium依然是很多团队的第一选择 我做过不少Web自动化测试项目&#xff0c;每次和别人聊到自动化测试选型&#xff0c;总有人问我&#xff1a;现在Playwright和Cypress这么火&#x…

作者头像 李华
网站建设 2026/9/9 21:34:52

AI画马年红包封面到微信小程序:从生成到上线的完整实践

春节前那段时间&#xff0c;我朋友圈里的年味变得越来越抽象。有人晒年会&#xff0c;有人晒抢票&#xff0c;真正让我停下刷手机动作的&#xff0c;是一张用 AI 生成的骏马图。那匹马踏碎祥云&#xff0c;鬃毛被金色风卷起来&#xff0c;虽然脚趾比例有点怪&#xff0c;但气势…

作者头像 李华
网站建设 2026/9/9 21:33:42

React组件测试如何用AI视觉回归捕获UI不一致

“测试全绿&#xff0c;上线后UI却乱了”——这种场景我已经不是第一次遇到。React组件测试作为前端质量保障的最后一道防线&#xff0c;大多数时候测的是“逻辑对不对”&#xff0c;而不是“界面像不像”。我用Jest和React Testing Library跑完所有用例&#xff0c;点击、渲染…

作者头像 李华
网站建设 2026/9/9 21:27:33

BP神经网络房价预测实战:从反向传播原理到Python调参全解析

简介&#xff1a;面向机器学习初学者与Python开发者的BP神经网络房价预测代码包&#xff0c;以经典波士顿房价数据集为背景&#xff0c;演示反向传播网络的完整落地流程&#xff0c;尤其适合刚接触深度学习、希望以真实案例理解梯度下降与误差反向传播的读者。代码包含数据读取…

作者头像 李华
网站建设 2026/9/9 21:24:52

C++高性能日志库实战:异步双缓冲设计与性能优化

做了三年多的C后端服务&#xff0c;日志库是我反复写过、重构过、推翻重来次数最多的组件之一。每次接手新项目&#xff0c;第一件事就是把日志系统单独拉出来审视一遍&#xff0c;因为它决定了你线上问题能不能快速定位、性能瓶颈能不能及时暴露。今天这篇就围绕“高性能日志库…

作者头像 李华