春秋杯冬季赛wp
字数 1668 2025-08-22 12:23:12
春秋杯冬季赛CTF解题技术文档
1. Web类题目解析
1.1 Flask SSTI注入
题目特征:
- 图片加载功能存在漏洞
- Flask框架应用
漏洞利用:
- 测试SSTI注入点:
{{7*7}}等简单表达式 - 确认存在后使用payload:
{{lipsum.__globals__['os'].popen('cat f*').read()}}
关键点:
- 利用
lipsum对象的__globals__属性访问os模块 - 通过
popen执行系统命令读取flag文件
1.2 PHP文件读取漏洞
题目特征:
- 文件路径输入返回文件大小
- PHP版本8.1.31
利用方法:
- 参考DownUnder CTF 2022的PHP过滤器链漏洞
- 使用GitHub脚本进行利用:
python3 filters_chain_oracle_exploit.py \
--target http://example.com/ \
--file '/flag' \
--parameter path
关键点:
- 利用PHP过滤器链进行文件读取
- 需要指定正确的目标URL和参数名
1.3 Go语言文件上传漏洞
题目特征:
- JWT伪造尝试失败
- 存在文件上传功能,仅允许tar文件
利用方法:
- 创建符号链接指向flag文件:
ln -s /flag symlink_to_flag
tar -cvf exploit.tar symlink_to_flag
- 上传tar文件
- 访问上传后的文件路径获取flag
关键点:
- 利用tar文件保留符号链接的特性
- 需要获取上传后的文件存储路径
2. Crypto类题目解析
2.1 SHA1哈希爆破
题目特征:
- 已知哈希值前三位
- 需要爆破8位哈希
解决方法:
- 编写脚本逐行生成可能的输入
- 计算SHA1哈希并与目标比较
2.2 RSA相关攻击
解题步骤:
- 使用Coppersmith方法爆破指数e
- 分析消息之间的关系:
- m2 = bytes_to_long(m1) + 3*(256^0 + 256^1 + 256^2 + 256^3 + 256^4)
- 注意ASCII 125对应'}'的特殊处理
- 使用Franklin-Reiter相关消息攻击
3. Misc类题目解析
3.1 简单算术
解决方法:
- 编写脚本遍历所有可能性
3.2 Aztec条码解码
步骤:
- 提取Aztec条码图像
- 使用解码工具获取隐藏信息
3.3 图片隐写
解决方法:
- 检查文件头发现PNG隐藏在JPG中
- 使用010 Editor等工具提取PNG
- 修复损坏的宽高信息:
- 使用Deformed-Image-Restorer工具
- 获取flag:
flag{opium_00pium}
3.4 网络流量分析
步骤:
- 分析HTTP流发现上传的ZIP文件
- 提取please_recovery.zip
- ZIP中包含img文件
- 使用R-Studio打开img文件
- 发现XLS文件包含flag:
flag{E7A10C15E26AA5750070EF756AAA1F7C}
4. Reverse Engineering类题目解析
4.1 ezre
分析:
- 标准伪随机数逆向
- 使用ltrace获取seed种子数
- 生成随机数序列
- 进行异或逆运算获取flag
4.2 ko0h
反调试技术:
- TLS进程检测反调试
- InlineHook劫持base64加密函数
- 修改后的RC4加密算法包含减法运算
- 动态修改key的反调试机制
解决方法:
- 绕过反调试
- 确定key为"DDDDAAAASSSS"
- 编写解密脚本处理密文
5. Pwn类题目解析
5.1 bypass
漏洞分析:
- 存在函数地址泄露漏洞
- 存在栈溢出漏洞
利用方法:
- 利用地址泄露获取关键函数地址
- 通过溢出劫持返回地址
- 使用one-gadget获取shell
附录:关键工具和脚本
-
PHP过滤器链利用工具:
- https://github.com/synacktiv/php_filter_chains_oracle_exploit
-
图片修复工具:
- Deformed-Image-Restorer
-
常用分析工具:
- 010 Editor
- R-Studio
- ltrace
- IDA Pro
-
常用命令:
- 创建符号链接:
ln -s /target symlink_name - 打包符号链接:
tar -cvf exploit.tar symlink_name - 计算SHA1:
echo -n "input" | sha1sum
- 创建符号链接: