sknbCTF 2025 部分题目wp
字数 2962 2025-11-26 12:20:37

sknbCTF 2025 题目解析与教学文档

一、Misc 杂项类题目

1.1 Welcome

题目描述:简单的欢迎题目,用于熟悉比赛环境。

解题方法

  • 在 Discord 平台搜索指定前缀即可找到相关信息
  • 最终 flag:sknb{https://youtu.be/0RG7iNERF4s}

教学要点

  • CTF 比赛中通常会有简单的欢迎题目帮助选手熟悉平台
  • 社交平台(Discord)是CTF比赛重要的信息交流渠道

1.2 PIN Authenticator PIN

漏洞原理:Python 对象身份比较漏洞

技术分析

  • 后端代码错误地使用 is 进行 PIN 码比较而非 ==
  • is 操作符检查对象身份(内存地址是否相同),== 检查值是否相等
  • SECRET_PIN 是模块级变量,存在于 Python 内存中

YAML 反序列化漏洞利用

username: admin
pin_code: !!python/name:__main__.SECRET_PIN

YAML 标签说明

  • !!python/name: 标签直接引用 Python 模块中的对象
  • 解析后得到内存中相同的 SECRET_PIN 对象
  • 通过 is 身份验证检查

教学要点

  • 理解 Python 中 is== 的区别
  • 掌握 YAML 反序列化安全风险
  • 学习 Python 对象引用机制

1.3 PIN Authenticator revenge

题目特点:前一道题目的进阶版本,但核心漏洞未修复

解题方法

  • 使用相同的 payload:
username: admin
pin_code: !!python/name:__main__.SECRET_PIN

教学要点

  • CTF 中经常出现同一漏洞的变种题目
  • 服务端口变化(5000→5050)不一定是漏洞修复标志
  • 需要分析核心逻辑是否真正改变

1.4 DB Mirage

文件分析技术

第一步:文件类型识别

  • 使用 010 Editor 等十六进制编辑器分析文件
  • 文件头:53 51 4C 69 74 65 20 66 6F 72 6D 61 74 20 33 00(SQLite format 3)
  • 但在偏移 0x60(96 字节)处发现 GZIP 魔术头:1F 8B 08

第二步:数据提取

  • 文件实质是 SQLite 外壳内嵌 GZIP 压缩数据
  • 删除前 96 字节 SQLite 头,保留 GZIP 数据
  • 解压 GZIP 得到 TAR 归档文件
  • 再次解压得到 LevelDB 数据库

第三步:LevelDB 数据分析

  • 使用专业工具(如火眼)分析 LevelDB
  • 数据格式:_welcome_to_sknbCTF!!!_<char>
  • 提取每个键值对末尾的字符组合成 flag

最终 flagsknb{l3v3ldb_sn4ppy_c4n7_h1d3_m3}

教学要点

  • 文件格式伪装是常见的隐写技术
  • 掌握多种文件格式的识别方法
  • LevelDB 数据库结构和分析方法

二、Reverse 逆向工程类题目

2.1 GIF-Zipper

加密原理

# 原加密过程
r, g, b = 像素RGB值
encoded_value = r << (g + 16) << (b + 8)

逆向分析步骤

第一步:理解加密算法

  • RGB 像素值被编码为超大整数
  • 使用位运算组合三个颜色通道
  • 原始图像信息被转换为数字序列

第二步:解密过程

  1. 读取数字序列文件
  2. 前两个数字通常是图像的宽度和高度
  3. 逆向位运算恢复原始 RGB 值
  4. 重构图像

第三步:结果分析

  • 最终得到二维码图像
  • 扫描二维码获得 flag

教学要点

  • 图像像素数据的编码解码技术
  • 位运算在数据隐藏中的应用
  • 二维码生成和识别原理

2.2 Fubukkit

题目背景:基于 Minecraft Bukkit 插件的逆向分析

核心逻辑

  1. Flag 被分割成字节数组(长度 ≤ 44)
  2. 每个字节被拆分为两个 4-bit 片段
  3. 每个片段映射到特定的成就名称:chal:<index>_<value>
  4. 必须按正确顺序触发成就

依赖关系分析

v0_7 → v1_* → v2_* → ... → goal

解题步骤

第一步:逆向分析 JAR 文件

  • 使用 jadx 等工具反编译 Java 字节码
  • 分析成就触发逻辑和依赖关系

第二步:重建路径

  • 根据代码中的依赖关系确定正确的成就触发顺序
  • 每个成就名称中的数字代表 4-bit 值

第三步:数据重组

  • 将每两个连续的 4-bit 值组合成一个字节
  • 将所有字节组合成完整的 flag

最终 flagsknb{bukkit_wo_bakkit}

教学要点

  • Java 字节码逆向分析技术
  • 数据分片和重组算法
  • 状态机或依赖关系分析

2.3 風が吹けば桶屋が儲かる

题目特点:多文件逆向工程

解题方法

第一步:文件分析

  • 题目提供大量 class 文件
  • 每个 class 文件包含四个字节的有效数据
  • 组合所有数据后生成 PNG 图片

第二步:批量处理

  • 编写脚本自动化解析所有 class 文件
  • 动态解析每个文件中的位移量和加法偏移量

第三步:图像重构

  • 提取并组合所有字节数据
  • 生成最终的 PNG 图像文件

最终 flagsknb{now_you_can_say_bye_bye_bytecode_73c1d0}

教学要点

  • 批量文件处理技术
  • 字节码动态分析
  • 数据提取和图像重构

2.4 from-one-to-two

非预期解法:文本可视化分析

解题技巧

  • 直接对二进制文件进行文本可视化
  • 在可视化的文本模式中发现隐藏的 flag
  • 避免复杂的逆向分析过程

教学要点

  • 多种解题思路的重要性
  • 文本可视化在逆向分析中的应用
  • 非预期解法的创造性思维

三、Web 网络安全类题目

3.1 Parse Parse Parse

漏洞类型:参数污染(Parameter Pollution)

漏洞原理

  • 不同层级的解析器对重复参数的处理不一致
  • 服务器可能用第一个参数做权限验证,用最后一个参数执行业务逻辑

利用方法

?user=admin&user=user

具体攻击场景

  1. 权限检查使用 user=admin(第一个参数)
  2. 业务逻辑使用 user=user(最后一个参数)
  3. 从而绕过权限控制

教学要点

  • HTTP 参数污染漏洞原理
  • 不同 Web 框架对重复参数的处理差异
  • 权限绕过技术

3.2 Auth Delegation

安全机制分析

WAF 防护

  • 检测到 username === "admin" 时重定向到 /login?message=admin%20detected
  • 阻止直接使用 admin 账户登录

认证逻辑

// Passport 策略只允许特定凭证
if (username === "admin" && password === "admin") {
    return done(null, user);
}

权限检查

// 登录成功后检查
if (req.user.username === "admin") {
    // 返回 flag
}

绕过方法

  • 需要找到方法绕过 WAF 同时满足认证逻辑
  • 可能涉及请求参数处理或会话管理漏洞

教学要点

  • 多层认证机制的安全分析
  • WAF 绕过技术
  • 会话管理和身份验证漏洞

四、通用技术总结

4.1 文件格式分析技术

  • 十六进制文件头分析
  • 多层文件格式识别
  • 数据提取和重组技术

4.2 逆向工程技术

  • 字节码反编译和分析
  • 算法逆向工程
  • 数据流跟踪和重建

4.3 Web 安全技术

  • 输入验证绕过
  • 认证授权漏洞
  • 业务逻辑漏洞利用

4.4 解题方法论

  • 多种解法尝试(预期解与非预期解)
  • 工具链构建和自动化脚本开发
  • 系统化的问题分析方法

本教学文档详细分析了 sknbCTF 2025 比赛中的关键技术点和解题方法,涵盖了 Misc、Reverse、Web 等多个领域的网络安全技术,适合作为 CTF 培训和网络安全学习的参考资料。

sknbCTF 2025 题目解析与教学文档 一、Misc 杂项类题目 1.1 Welcome 题目描述 :简单的欢迎题目,用于熟悉比赛环境。 解题方法 : 在 Discord 平台搜索指定前缀即可找到相关信息 最终 flag: sknb{https://youtu.be/0RG7iNERF4s} 教学要点 : CTF 比赛中通常会有简单的欢迎题目帮助选手熟悉平台 社交平台(Discord)是CTF比赛重要的信息交流渠道 1.2 PIN Authenticator PIN 漏洞原理 :Python 对象身份比较漏洞 技术分析 : 后端代码错误地使用 is 进行 PIN 码比较而非 == is 操作符检查对象身份(内存地址是否相同), == 检查值是否相等 SECRET_PIN 是模块级变量,存在于 Python 内存中 YAML 反序列化漏洞利用 : YAML 标签说明 : !!python/name: 标签直接引用 Python 模块中的对象 解析后得到内存中相同的 SECRET_PIN 对象 通过 is 身份验证检查 教学要点 : 理解 Python 中 is 与 == 的区别 掌握 YAML 反序列化安全风险 学习 Python 对象引用机制 1.3 PIN Authenticator revenge 题目特点 :前一道题目的进阶版本,但核心漏洞未修复 解题方法 : 使用相同的 payload: 教学要点 : CTF 中经常出现同一漏洞的变种题目 服务端口变化(5000→5050)不一定是漏洞修复标志 需要分析核心逻辑是否真正改变 1.4 DB Mirage 文件分析技术 : 第一步:文件类型识别 使用 010 Editor 等十六进制编辑器分析文件 文件头: 53 51 4C 69 74 65 20 66 6F 72 6D 61 74 20 33 00 (SQLite format 3) 但在偏移 0x60(96 字节)处发现 GZIP 魔术头: 1F 8B 08 第二步:数据提取 文件实质是 SQLite 外壳内嵌 GZIP 压缩数据 删除前 96 字节 SQLite 头,保留 GZIP 数据 解压 GZIP 得到 TAR 归档文件 再次解压得到 LevelDB 数据库 第三步:LevelDB 数据分析 使用专业工具(如火眼)分析 LevelDB 数据格式: _welcome_to_sknbCTF!!!_<char> 提取每个键值对末尾的字符组合成 flag 最终 flag : sknb{l3v3ldb_sn4ppy_c4n7_h1d3_m3} 教学要点 : 文件格式伪装是常见的隐写技术 掌握多种文件格式的识别方法 LevelDB 数据库结构和分析方法 二、Reverse 逆向工程类题目 2.1 GIF-Zipper 加密原理 : 逆向分析步骤 : 第一步:理解加密算法 RGB 像素值被编码为超大整数 使用位运算组合三个颜色通道 原始图像信息被转换为数字序列 第二步:解密过程 读取数字序列文件 前两个数字通常是图像的宽度和高度 逆向位运算恢复原始 RGB 值 重构图像 第三步:结果分析 最终得到二维码图像 扫描二维码获得 flag 教学要点 : 图像像素数据的编码解码技术 位运算在数据隐藏中的应用 二维码生成和识别原理 2.2 Fubukkit 题目背景 :基于 Minecraft Bukkit 插件的逆向分析 核心逻辑 : Flag 被分割成字节数组(长度 ≤ 44) 每个字节被拆分为两个 4-bit 片段 每个片段映射到特定的成就名称: chal:<index>_<value> 必须按正确顺序触发成就 依赖关系分析 : 解题步骤 : 第一步:逆向分析 JAR 文件 使用 jadx 等工具反编译 Java 字节码 分析成就触发逻辑和依赖关系 第二步:重建路径 根据代码中的依赖关系确定正确的成就触发顺序 每个成就名称中的数字代表 4-bit 值 第三步:数据重组 将每两个连续的 4-bit 值组合成一个字节 将所有字节组合成完整的 flag 最终 flag : sknb{bukkit_wo_bakkit} 教学要点 : Java 字节码逆向分析技术 数据分片和重组算法 状态机或依赖关系分析 2.3 風が吹けば桶屋が儲かる 题目特点 :多文件逆向工程 解题方法 : 第一步:文件分析 题目提供大量 class 文件 每个 class 文件包含四个字节的有效数据 组合所有数据后生成 PNG 图片 第二步:批量处理 编写脚本自动化解析所有 class 文件 动态解析每个文件中的位移量和加法偏移量 第三步:图像重构 提取并组合所有字节数据 生成最终的 PNG 图像文件 最终 flag : sknb{now_you_can_say_bye_bye_bytecode_73c1d0} 教学要点 : 批量文件处理技术 字节码动态分析 数据提取和图像重构 2.4 from-one-to-two 非预期解法 :文本可视化分析 解题技巧 : 直接对二进制文件进行文本可视化 在可视化的文本模式中发现隐藏的 flag 避免复杂的逆向分析过程 教学要点 : 多种解题思路的重要性 文本可视化在逆向分析中的应用 非预期解法的创造性思维 三、Web 网络安全类题目 3.1 Parse Parse Parse 漏洞类型 :参数污染(Parameter Pollution) 漏洞原理 : 不同层级的解析器对重复参数的处理不一致 服务器可能用第一个参数做权限验证,用最后一个参数执行业务逻辑 利用方法 : 具体攻击场景 : 权限检查使用 user=admin (第一个参数) 业务逻辑使用 user=user (最后一个参数) 从而绕过权限控制 教学要点 : HTTP 参数污染漏洞原理 不同 Web 框架对重复参数的处理差异 权限绕过技术 3.2 Auth Delegation 安全机制分析 : WAF 防护 : 检测到 username === "admin" 时重定向到 /login?message=admin%20detected 阻止直接使用 admin 账户登录 认证逻辑 : 权限检查 : 绕过方法 : 需要找到方法绕过 WAF 同时满足认证逻辑 可能涉及请求参数处理或会话管理漏洞 教学要点 : 多层认证机制的安全分析 WAF 绕过技术 会话管理和身份验证漏洞 四、通用技术总结 4.1 文件格式分析技术 十六进制文件头分析 多层文件格式识别 数据提取和重组技术 4.2 逆向工程技术 字节码反编译和分析 算法逆向工程 数据流跟踪和重建 4.3 Web 安全技术 输入验证绕过 认证授权漏洞 业务逻辑漏洞利用 4.4 解题方法论 多种解法尝试(预期解与非预期解) 工具链构建和自动化脚本开发 系统化的问题分析方法 本教学文档详细分析了 sknbCTF 2025 比赛中的关键技术点和解题方法,涵盖了 Misc、Reverse、Web 等多个领域的网络安全技术,适合作为 CTF 培训和网络安全学习的参考资料。