Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

由于当前大语言模型发展迅速,其能够辅助甚至独立解决的CTF题目越来越多,因此这里尝试研究其在CTF场景中的适用性以及提示词(Prompt)技巧。

CTF的题目类型主要可以分成静态和动态:

  • 做部分静态题目时,可以直接将题目附件、源码或相关文件一次性提供给 (网页版的)AI 即可。信息比较全面,且不容易触发安全检查。网页版ChatGPT目前可以调用很多工具,所以支持分析的文件格式也很多。但网页版AI不支持与服务器/网页进行交互。
  • 但更简单通用的办法是在本地用Codex/Claude Code等AI agent。它们可以完全自动化在本地进行各种调试/测试,并且利用你的电脑来连接题目靶机获取flag。

基本上网页版AI可以解决的静态题目,用AI Agent也都能解决。它唯一的优势就是不消耗任何token,所以可以(接近)无限制地使用

AI Agent配置

主要推荐的AI Agent就是Codex和Claude Code。只不过为了完全自动化,需要给它们最高权限。所以如果担心电脑文件安全的话,推荐在一个较空白的服务器上运行。

Codex

建议用vscode里的codex插件。

修改一下配置文件config.toml

在codex的配置设置里选择“打开 config.toml”:

image-20260410235351137

1
2
3
4
model = "gpt-5.4"
model_reasoning_effort = "xhigh"
approval_policy = "never"
sandbox_mode = "danger-full-access"

给最高权限,且不询问。

并且每次都启用“计划模式”:

image-20260410235226208

Claude Code

Claude Code建议用在terminal上用程序,因为vscode的插件有很多bug。

直接用这个命令打开Claude Code,永不询问:

1
claude --dangerously-skip-permissions

但是Claude Code的token消耗速度很快,经常跑1个小时左右就会到上限从而停止运行。做复杂的题目时非常不方便。相比之下Codex就会好很多。

AI Agent Prompt

直接用Codex(一定要选择计划模式),Claude Code等。

Web

Prompt模板:

1
2
3
4
5
6
7
这是一道CTF的web题目。
题目名称:
题目描述:

本文件夹为题目附件。

获取flag。
1
2
这是一道CTF的web题目。题目没有给任何附件以及题目描述,提示等。只有题目环境:。
获取flag。

image-20260322232334430

密码学 Crypto

配置环境:

1
pip install -U sympy pycryptodome gmpy2 
1
2
3
4
5
6
7
这是一道CTF密码学题目。
题目名称:
题目描述:

本文件夹为题目附件。

获取flag。
1
2
3
4
5
6
7
这是一道CTF密码学题目。
题目名称:
题目描述:

本文件夹为题目附件。必要的情况可以使用名为"sage"的conda环境中的sage。

获取flag。

Pwn

1
2
3
4
这是道ctf的pwn题目。
当前文件夹为题目附件。远程题目环境:。
如果可以先尝试直接打通远程获取flag。如需要本地搭建环境进行调试,使用题目给定的环境文件。
获取flag。

image-20260322193320217

image-20260322220147111

(这道题是这场比赛里pwn板块做出来的人最少的题,所以耗时也久很多。)


AI独立完成了这个比赛的所有Pwn方向的题目:

image-20260322223449772


并且它可以自己搭建Docker环境进行调试:

image-20260323114135514

Misc/Rev

基本和前面的一样:

1
2
3
4
5
6
7
这是一道CTF的misc题目。
题目名称:
题目描述:

本文件夹为题目附件。

获取flag。
1
2
3
4
5
6
7
这是一道CTF的rev题目。
题目名称:
题目描述:

本文件夹为题目附件。

获取flag。

静态题目

推荐用网页版的ChatGPT。Claude的网页版对单次对话中的工具调用次数有严格上限,且很容易到达上限。

Crypto 密码学

1. CTF+极客大挑战2023-Crypto-SignIn

image-20260320112642937

提示词:

1
2
这道ctf的题怎么做?
Bibo...Hello! 你好! こんにちは! Привет! 5359437b48656c6c6f5f576f726c645f43727970746f5f6269626f6269626f7d… Hmm... Something goes wrong with my grettings bot.

image-20260320112751199

(测试时的模型:ChatGPT Thinking 5.4)

Reverse

可以自主分析并调试elf,exe等二进制文件。

prompt:

1
这是道ctf的rev题目。获取flag。

Misc

取证 Forensics

可以自动修复有问题的压缩包文件,并分析pcap文件。

1. CTF+这是捕获的黑客攻击数据包

image-20260320125806648

提示词:

1
这道ctf的forensics题怎么做?给我flag。

image-20260320125834141

隐写 Steganography

1. CTF+Misc1

image-20260320110931281

提示词:

1
这是道ctf的隐写题。给我flag,并简短地说一下是怎么做的。

image-20260320105426644

(测试时的模型:ChatGPT Thinking 5.4)

测试/research

NCTF 2026 web题目N-Horse

题目介绍:

(题目无任何描述与附件)

刚点进去是这样的:

image-20260405233710752

账号处可触发反射型xss漏洞:

1
<script>alert(1)</script>

image-20260405233952759

但实际上漏洞在于账号这里有Jinja2的ssti漏洞:虽然说直接注入{{7*7}}它不会直接执行,

image-20260405234111203

但是注入 {{ 时它会返回

image-20260405234127965

也就是说jinja2会被成功执行,但是题目网站并不会回显结果。

而codex很容易在这道题目卡死在xss漏洞。

测试Prompt:

1
2
3
4
5
6
这是一道CTF的web题目。
题目描述:114.66.24.221:36036。

本文件夹为题目附件。

获取flag。

在不说明该题目没有附件的情况下它容易主动来询问你是否有更多信息:

image-20260405230932497

(2。继续纯黑盒分析)

然后绕死在xss。


而在给定了题目的详细信息时(比赛名称,题目名称等),它甚至会跑去尝试在比赛的网站上注册账号来查看题目描述等内容。后续依旧卡死在xss上。

image-20260405235149847


相比之下明确告知没有任何其他信息的情况下会更容易成功做出来:

1
2
这是一道CTF的web题目。题目没有给任何附件以及题目描述,提示等。只有题目环境:114.66.24.221:35592。
获取flag。
1
2
这是一道CTF的web题目。题目没有给任何附件以及题目描述,提示等。只有题目环境:114.66.24.221:44246。
获取flag。

image-20260405235629096

但是,Codex用这个prompt也不是每次都能做出来。而与之相对的,使用同样的Prompt,Claude Code可以稳定地做出来。貌似目前Claude Code会比Codex更加擅长Web方向的题目。