swampctf2025 WP
字数 3538 2025-08-30 06:50:28

SwampCTF 2025 比赛Writeup解析与教学文档

Web安全挑战解析

Web1: Serialies (/api/person)

  • 漏洞类型: 反序列化漏洞
  • 解题思路:
    1. 检查/api/person接口的反序列化功能
    2. 尝试构造恶意序列化数据
    3. 利用反序列化漏洞执行任意代码或读取敏感信息

Web2: Hidden Message-Board

  • 漏洞类型: 隐藏功能发现
  • 解题思路:
    1. 全面扫描网站目录和文件
    2. 检查源代码中的注释和隐藏链接
    3. 尝试发现未公开的消息板功能

Web3: Beginner Web

  • 解题步骤:
    1. F12开发者工具直接查看flag1
    2. 审计JavaScript代码发现flag2和flag3的加密逻辑
    3. 使用CryptoJS库解密flag
    4. 在浏览器控制台执行解密代码获取完整flag

Web4: SlowAPI

  • 漏洞类型: 慢速攻击/中间件漏洞
  • 关键点:
    • 研究Next.js中间件漏洞
    • 利用慢速请求导致服务端资源耗尽
    • 参考链接: https://zhero-web-sec.github.io/research-and-things/nextjs-and-the-corrupt-middleware

Web5: Sunset Boulevard

  • 解题思路:
    1. 发现admin路由的登录功能
    2. 题目提示"fan latters"有用
    3. 构造XSS攻击获取管理员cookie
    4. 利用获取的cookie访问管理员功能

Web6: Contamination

  • 漏洞类型: 请求走私
  • 关键技术:
    • 构造特殊JSON字符串{"a": "é"}
    • 利用ISO-8859-1和UTF-8编码差异
    • 只有特定路由和参数会被转发到后端/api路由

Web7: Editor

  • 安全限制:
    • <script>标签被直接移除
    • on*事件处理器被正则表达式移除
    • CSS注入仅允许替换<style class="custom-user-css">内容
  • 绕过方法:
    • 使用iframe标签直接加载flag.txt

Web8: SwampTech Solutions

  • 攻击链:
    1. 以guest身份登录,发现cookie是guest的MD5值
    2. 伪造admin的MD5值获取管理员权限
    3. 访问adminpage.php发现隐藏接口
    4. 利用XXE漏洞读取系统文件

Web9: MaybeHappyEndingGPT

  • 漏洞利用:
    1. 尝试让AI返回构成RCE的字符串
    2. 发现系统限制
    3. 在请求包中删除system身份的限制
    4. 构造有效载荷实现远程代码执行

杂项(Misc)挑战

0x01-Join our Discord!

  • 简单flag: swampCTF{w3lc0m3_t0_th3_swamp}

0x02-Pretty Picture: Double Exposure

  • 解题方法:
    • 使用图片叠加技术
    • 参考工具: https://samdeleon.github.io/UnhidingImages.html
  • flag: swampCTF{m3ss4g3s_0r_c0d3_c4n_b3_h1dd3n_1n_1m4g3s}

0x06-Blue goblob

  • 解题步骤:
    1. 枚举blob存储
    2. 利用匿名访问权限
    3. 直接读取flag文件

0x03-Read Between .tga Lines

  • 新型题目类型:
    • 两张图片横向截取混淆
    • 需要分离和重组图像数据

0x04-Lost In Translation

  • 解题工具:
    • 使用Whitespace语言分析工具: https://naokikp.github.io/wsi/whitespace.html
    • 运行环境: NodeJS 18.17.1+

0x05-Messages From The Stars

  • 音频分析:
    1. 检查音频左右通道差异
    2. 提取隐藏数据
    3. 解码获取flag

开源情报(OSInt)挑战

0x01-Party Time!

  • 解题方法:
    1. 使用在线EXIF查看器: https://www.strerr.com/cn/exif.html
    2. 提取图片地理位置信息
  • flag: swampCTF{29.65,82.33}

0x03-Party Time! Level 2

  • 关键发现:
    • 检查图片评论区域
  • flag: swampCTF{Checkers_Yum}

0x02-On Thin ICE

  • 解题步骤:
    1. 转换数据得到hex值
    2. 拆分翻译得到"第八步 自由"
    3. 识别为《使命召唤7》中的台词
    4. 定位到沃尔库塔的前苏联监狱
    5. 在Google地图查找当地溜冰场

取证(Forensics)挑战

0x01-Homework Help

  • 解题方法:
    • 扫描磁盘恢复已删除文件
  • flag: swampCTF{n0thing_i5_3v3r_d3l3t3d}

0x02-Planetary Storage

  • 解题步骤:
    1. 提取payload部分
    2. 进行两次base解码
  • flag: swampCTF{1pf5-b453d-d474b453}

0x03-Preferential Treatment

  • 攻击方法:
    1. 从SMB流量导出配置文件Groups.xml
    2. 提取cpassword密文
    3. 使用微软公开的AES 256私钥解密
  • 替代工具:
    gpp-decrypt "dAw7VQvfj9rs53A8t4PudTVf85Ca5cmC1Xjx6TpI/cS8WD4D8DXbKiWIZslihdJw3Rf+ijboX7FgLW7pF0K6x7dfhQ8gxLq34ENGjN8eTOI="
    
  • flag: swampCTF{4v3r463_w1nd0w5_53cur17y}

0x04-MuddyWater

  • 解题步骤:
    1. 搜索STATUS_SUCCESS关键字
    2. 追踪流提取NTLMv2哈希
    3. 使用hashcat破解哈希
  • 参考链接: https://zhuanlan.zhihu.com/p/52882041
  • flag格式: swampCTF{:}
  • 示例: hackbackzip:pikeplace

0x05-proto

  • 解题要点:
    • 分析数据包中的协议
    • 识别与服务器的交互模式
    • 提取payload部分进行分析

二进制(PWN)挑战

Oh my buffer

  • 漏洞分析:
    • login函数存在栈任意大小泄露
    • reg函数存在0x12字节溢出
  • 利用步骤:
    1. 通过login泄露stack、canary和libc基址
    2. 通过reg函数构造ROP链
    3. 覆盖返回地址末位为leave_ret地址
    4. 进行栈迁移攻击

coredump_GAAS

  • 分析过程:
    1. 从core dump文件恢复可执行文件
    2. 静态分析发现gets和printf漏洞
    3. 利用printf泄露libc地址
    4. 构造ret2libc攻击
  • 保护机制: 无canary和PIE

notecard

  • 漏洞利用:
    1. 检查程序保护机制
    2. 通过用户名泄露code_base
    3. 利用未检查的负数索引越界修改指针
    4. 实现任意位置读写
    5. 读取GOT表获取libc地址
    6. 将puts改为system
    7. 布置"/bin/sh"字符串
    8. 获取shell
  • 注意: 远程使用libc2.39

Tinybrain

  • 漏洞分析:
    • Brainfuck解释器
    • 256*2个跳转表无边界检查
    • 存在RWX内存段
  • 利用步骤:
    1. 写入shellcode
    2. 移动ptr到跳转表
    3. 修改\xff跳转表指向shellcode
    4. 输入\xff执行shellcode

密码学(Crypto)挑战

crypto1 Rock my Password

  • 漏洞类型: 密钥重用
  • 解题步骤:
    1. 分析1184字符的密文
    2. 使用已知明文m4(同样1184字符)
    3. 明文和密文异或得到密钥
    4. 用密钥异或题目密文得到flag

总结与学习要点

  1. Web安全:

    • 关注现代框架漏洞(如Next.js中间件问题)
    • 熟练掌握各种注入技术(XSS, XXE, 反序列化)
    • 理解编码差异导致的漏洞(如ISO-8859-1 vs UTF-8)
  2. 二进制利用:

    • 掌握栈迁移等高级ROP技术
    • 熟悉从core dump恢复和分析的技巧
    • 理解跳转表漏洞的利用方法
  3. 取证技术:

    • 熟练使用各种数据恢复技术
    • 掌握Windows系统密码提取方法
    • 理解网络协议分析技巧
  4. 密码学:

    • 识别并利用密钥重用漏洞
    • 掌握基本的加密分析技术
  5. 开源情报:

    • 熟练提取和分析元数据
    • 掌握地理位置信息追踪技巧
    • 了解流行文化引用在CTF中的应用
  6. 杂项技能:

    • 掌握隐写术的各种技术
    • 了解非常规编程语言(如Whitespace)
    • 熟练使用音频分析工具

这份文档全面涵盖了SwampCTF 2025比赛中的各类挑战,从Web安全到二进制利用,从取证技术到密码学分析,每个题目都提供了详细的技术解析和解题思路,可作为CTF训练和网络安全学习的宝贵参考资料。

SwampCTF 2025 比赛Writeup解析与教学文档 Web安全挑战解析 Web1: Serialies (/api/person) 漏洞类型 : 反序列化漏洞 解题思路 : 检查/api/person接口的反序列化功能 尝试构造恶意序列化数据 利用反序列化漏洞执行任意代码或读取敏感信息 Web2: Hidden Message-Board 漏洞类型 : 隐藏功能发现 解题思路 : 全面扫描网站目录和文件 检查源代码中的注释和隐藏链接 尝试发现未公开的消息板功能 Web3: Beginner Web 解题步骤 : F12开发者工具直接查看flag1 审计JavaScript代码发现flag2和flag3的加密逻辑 使用CryptoJS库解密flag 在浏览器控制台执行解密代码获取完整flag Web4: SlowAPI 漏洞类型 : 慢速攻击/中间件漏洞 关键点 : 研究Next.js中间件漏洞 利用慢速请求导致服务端资源耗尽 参考链接: https://zhero-web-sec.github.io/research-and-things/nextjs-and-the-corrupt-middleware Web5: Sunset Boulevard 解题思路 : 发现admin路由的登录功能 题目提示"fan latters"有用 构造XSS攻击获取管理员cookie 利用获取的cookie访问管理员功能 Web6: Contamination 漏洞类型 : 请求走私 关键技术 : 构造特殊JSON字符串 {"a": "é"} 利用ISO-8859-1和UTF-8编码差异 只有特定路由和参数会被转发到后端/api路由 Web7: Editor 安全限制 : <script> 标签被直接移除 on* 事件处理器被正则表达式移除 CSS注入仅允许替换 <style class="custom-user-css"> 内容 绕过方法 : 使用 iframe 标签直接加载flag.txt Web8: SwampTech Solutions 攻击链 : 以guest身份登录,发现cookie是guest的MD5值 伪造admin的MD5值获取管理员权限 访问adminpage.php发现隐藏接口 利用XXE漏洞读取系统文件 Web9: MaybeHappyEndingGPT 漏洞利用 : 尝试让AI返回构成RCE的字符串 发现系统限制 在请求包中删除system身份的限制 构造有效载荷实现远程代码执行 杂项(Misc)挑战 0x01-Join our Discord ! 简单flag : swampCTF{w3lc0m3_ t0_ th3_ swamp} 0x02-Pretty Picture: Double Exposure 解题方法 : 使用图片叠加技术 参考工具: https://samdeleon.github.io/UnhidingImages.html flag : swampCTF{m3ss4g3s_ 0r_ c0d3_ c4n_ b3_ h1dd3n_ 1n_ 1m4g3s} 0x06-Blue goblob 解题步骤 : 枚举blob存储 利用匿名访问权限 直接读取flag文件 0x03-Read Between .tga Lines 新型题目类型 : 两张图片横向截取混淆 需要分离和重组图像数据 0x04-Lost In Translation 解题工具 : 使用Whitespace语言分析工具: https://naokikp.github.io/wsi/whitespace.html 运行环境: NodeJS 18.17.1+ 0x05-Messages From The Stars 音频分析 : 检查音频左右通道差异 提取隐藏数据 解码获取flag 开源情报(OSInt)挑战 0x01-Party Time ! 解题方法 : 使用在线EXIF查看器: https://www.strerr.com/cn/exif.html 提取图片地理位置信息 flag : swampCTF{29.65,82.33} 0x03-Party Time ! Level 2 关键发现 : 检查图片评论区域 flag : swampCTF{Checkers_ Yum} 0x02-On Thin ICE 解题步骤 : 转换数据得到hex值 拆分翻译得到"第八步 自由" 识别为《使命召唤7》中的台词 定位到沃尔库塔的前苏联监狱 在Google地图查找当地溜冰场 取证(Forensics)挑战 0x01-Homework Help 解题方法 : 扫描磁盘恢复已删除文件 flag : swampCTF{n0thing_ i5_ 3v3r_ d3l3t3d} 0x02-Planetary Storage 解题步骤 : 提取payload部分 进行两次base解码 flag : swampCTF{1pf5-b453d-d474b453} 0x03-Preferential Treatment 攻击方法 : 从SMB流量导出配置文件Groups.xml 提取cpassword密文 使用微软公开的AES 256私钥解密 替代工具 : flag : swampCTF{4v3r463_ w1nd0w5_ 53cur17y} 0x04-MuddyWater 解题步骤 : 搜索STATUS_ SUCCESS关键字 追踪流提取NTLMv2哈希 使用hashcat破解哈希 参考链接 : https://zhuanlan.zhihu.com/p/52882041 flag格式 : swampCTF{ : } 示例 : hackbackzip:pikeplace 0x05-proto 解题要点 : 分析数据包中的协议 识别与服务器的交互模式 提取payload部分进行分析 二进制(PWN)挑战 Oh my buffer 漏洞分析 : login函数存在栈任意大小泄露 reg函数存在0x12字节溢出 利用步骤 : 通过login泄露stack、canary和libc基址 通过reg函数构造ROP链 覆盖返回地址末位为leave_ ret地址 进行栈迁移攻击 coredump_ GAAS 分析过程 : 从core dump文件恢复可执行文件 静态分析发现gets和printf漏洞 利用printf泄露libc地址 构造ret2libc攻击 保护机制 : 无canary和PIE notecard 漏洞利用 : 检查程序保护机制 通过用户名泄露code_ base 利用未检查的负数索引越界修改指针 实现任意位置读写 读取GOT表获取libc地址 将puts改为system 布置"/bin/sh"字符串 获取shell 注意 : 远程使用libc2.39 Tinybrain 漏洞分析 : Brainfuck解释器 256* 2个跳转表无边界检查 存在RWX内存段 利用步骤 : 写入shellcode 移动ptr到跳转表 修改\xff跳转表指向shellcode 输入\xff执行shellcode 密码学(Crypto)挑战 crypto1 Rock my Password 漏洞类型 : 密钥重用 解题步骤 : 分析1184字符的密文 使用已知明文m4(同样1184字符) 明文和密文异或得到密钥 用密钥异或题目密文得到flag 总结与学习要点 Web安全 : 关注现代框架漏洞(如Next.js中间件问题) 熟练掌握各种注入技术(XSS, XXE, 反序列化) 理解编码差异导致的漏洞(如ISO-8859-1 vs UTF-8) 二进制利用 : 掌握栈迁移等高级ROP技术 熟悉从core dump恢复和分析的技巧 理解跳转表漏洞的利用方法 取证技术 : 熟练使用各种数据恢复技术 掌握Windows系统密码提取方法 理解网络协议分析技巧 密码学 : 识别并利用密钥重用漏洞 掌握基本的加密分析技术 开源情报 : 熟练提取和分析元数据 掌握地理位置信息追踪技巧 了解流行文化引用在CTF中的应用 杂项技能 : 掌握隐写术的各种技术 了解非常规编程语言(如Whitespace) 熟练使用音频分析工具 这份文档全面涵盖了SwampCTF 2025比赛中的各类挑战,从Web安全到二进制利用,从取证技术到密码学分析,每个题目都提供了详细的技术解析和解题思路,可作为CTF训练和网络安全学习的宝贵参考资料。