春秋杯冬季赛wp
字数 1668 2025-08-22 12:23:12

春秋杯冬季赛CTF解题技术文档

1. Web类题目解析

1.1 Flask SSTI注入

题目特征

  • 图片加载功能存在漏洞
  • Flask框架应用

漏洞利用

  1. 测试SSTI注入点:{{7*7}}等简单表达式
  2. 确认存在后使用payload:
{{lipsum.__globals__['os'].popen('cat f*').read()}}

关键点

  • 利用lipsum对象的__globals__属性访问os模块
  • 通过popen执行系统命令读取flag文件

1.2 PHP文件读取漏洞

题目特征

  • 文件路径输入返回文件大小
  • PHP版本8.1.31

利用方法

  1. 参考DownUnder CTF 2022的PHP过滤器链漏洞
  2. 使用GitHub脚本进行利用:
python3 filters_chain_oracle_exploit.py \
  --target http://example.com/ \
  --file '/flag' \
  --parameter path

关键点

  • 利用PHP过滤器链进行文件读取
  • 需要指定正确的目标URL和参数名

1.3 Go语言文件上传漏洞

题目特征

  • JWT伪造尝试失败
  • 存在文件上传功能,仅允许tar文件

利用方法

  1. 创建符号链接指向flag文件:
ln -s /flag symlink_to_flag
tar -cvf exploit.tar symlink_to_flag
  1. 上传tar文件
  2. 访问上传后的文件路径获取flag

关键点

  • 利用tar文件保留符号链接的特性
  • 需要获取上传后的文件存储路径

2. Crypto类题目解析

2.1 SHA1哈希爆破

题目特征

  • 已知哈希值前三位
  • 需要爆破8位哈希

解决方法

  1. 编写脚本逐行生成可能的输入
  2. 计算SHA1哈希并与目标比较

2.2 RSA相关攻击

解题步骤

  1. 使用Coppersmith方法爆破指数e
  2. 分析消息之间的关系:
    • m2 = bytes_to_long(m1) + 3*(256^0 + 256^1 + 256^2 + 256^3 + 256^4)
  3. 注意ASCII 125对应'}'的特殊处理
  4. 使用Franklin-Reiter相关消息攻击

3. Misc类题目解析

3.1 简单算术

解决方法

  • 编写脚本遍历所有可能性

3.2 Aztec条码解码

步骤

  1. 提取Aztec条码图像
  2. 使用解码工具获取隐藏信息

3.3 图片隐写

解决方法

  1. 检查文件头发现PNG隐藏在JPG中
  2. 使用010 Editor等工具提取PNG
  3. 修复损坏的宽高信息:
    • 使用Deformed-Image-Restorer工具
  4. 获取flag:flag{opium_00pium}

3.4 网络流量分析

步骤

  1. 分析HTTP流发现上传的ZIP文件
  2. 提取please_recovery.zip
  3. ZIP中包含img文件
  4. 使用R-Studio打开img文件
  5. 发现XLS文件包含flag:flag{E7A10C15E26AA5750070EF756AAA1F7C}

4. Reverse Engineering类题目解析

4.1 ezre

分析

  1. 标准伪随机数逆向
  2. 使用ltrace获取seed种子数
  3. 生成随机数序列
  4. 进行异或逆运算获取flag

4.2 ko0h

反调试技术

  1. TLS进程检测反调试
  2. InlineHook劫持base64加密函数
  3. 修改后的RC4加密算法包含减法运算
  4. 动态修改key的反调试机制

解决方法

  1. 绕过反调试
  2. 确定key为"DDDDAAAASSSS"
  3. 编写解密脚本处理密文

5. Pwn类题目解析

5.1 bypass

漏洞分析

  1. 存在函数地址泄露漏洞
  2. 存在栈溢出漏洞

利用方法

  1. 利用地址泄露获取关键函数地址
  2. 通过溢出劫持返回地址
  3. 使用one-gadget获取shell

附录:关键工具和脚本

  1. PHP过滤器链利用工具:

    • https://github.com/synacktiv/php_filter_chains_oracle_exploit
  2. 图片修复工具:

    • Deformed-Image-Restorer
  3. 常用分析工具:

    • 010 Editor
    • R-Studio
    • ltrace
    • IDA Pro
  4. 常用命令:

    • 创建符号链接:ln -s /target symlink_name
    • 打包符号链接:tar -cvf exploit.tar symlink_name
    • 计算SHA1:echo -n "input" | sha1sum
春秋杯冬季赛CTF解题技术文档 1. Web类题目解析 1.1 Flask SSTI注入 题目特征 : 图片加载功能存在漏洞 Flask框架应用 漏洞利用 : 测试SSTI注入点: {{7*7}} 等简单表达式 确认存在后使用payload: 关键点 : 利用 lipsum 对象的 __globals__ 属性访问os模块 通过 popen 执行系统命令读取flag文件 1.2 PHP文件读取漏洞 题目特征 : 文件路径输入返回文件大小 PHP版本8.1.31 利用方法 : 参考DownUnder CTF 2022的PHP过滤器链漏洞 使用GitHub脚本进行利用: 关键点 : 利用PHP过滤器链进行文件读取 需要指定正确的目标URL和参数名 1.3 Go语言文件上传漏洞 题目特征 : JWT伪造尝试失败 存在文件上传功能,仅允许tar文件 利用方法 : 创建符号链接指向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