RCTF 部分题目wp
字数 1947 2025-11-21 13:18:03

RCTF 题目综合教学文档

一、Wanna Feel Love 题目解析

1.1 Challenge 1:邮件隐写分析

技术要点

  • 文件格式:EML格式邮件文件分析
  • 编码方式识别:Base64、Quoted-Printable等邮件编码
  • 多部分邮件解析:递归遍历MIME结构

实现代码分析

# 核心解码函数
def decode_part(part):
    # 获取传输编码类型
    cte = (part.get("Content-Transfer-Encoding") or "").lower()
    
    # 根据编码类型选择解码方式
    if "base64" in cte:
        decoded_bytes = base64.b64decode(raw)
    elif "quoted-printable" in cte:
        decoded_bytes = quopri.decodestring(raw)
    
    # 字符集处理
    charset = part.get_content_charset() or "utf-8"

关键发现

  • 邮件正文中隐藏的垃圾邮件文本包含重要信息
  • 通过分析邮件各部分内容,提取隐藏的"低语"信息

1.2 Challenge 2:XM音频文件隐写

技术原理

  • XM格式:Extended Module音乐文件格式
  • 峰值编码:通过音频波形峰值传递二进制信息
  • 采样率转换:将音乐数据转换为可分析的波形

解码步骤

  1. 文件转换:使用OpenMPT/MilkyTracker将XM转为WAV
  2. 参数设置:确定采样率、位深度等关键参数
  3. 峰值检测:滑动窗口分析波形绝对值最大值
  4. 比特提取:阈值判断生成二进制序列

核心算法

# 峰值检测算法示意
samples_per_bit = 1000  # 每个bit对应的采样数
threshold_ratio = 0.7   # 峰值阈值比例

for i in range(0, len(samples), samples_per_bit):
    window = samples[i:i+samples_per_bit]
    max_val = max(abs(window))
    
    if max_val > threshold_ratio:
        bit_stream.append('1')
    else:
        bit_stream.append('0')

解码结果

隐藏信息:"I Feel Fantastic heyheyhey"

1.3 Challenge 3:YouTube视频溯源

OSINT技术要点

  • 视频ID识别:rLy-AwdCOmI
  • 时间线重建:上传日期2009-04-15
  • 上传者确认:Creepyblog账号

验证方法

  • 多源交叉验证(Wiki、存档站、考据文章)
  • Internet Archive历史记录查询
  • 相关社区讨论分析

1.4 Challenge 4:数字商品溯源

关键信息

  • 购买链接:http://www.androidworld.com/prod68.htm
  • 发件人:Android World / Chris Willis
  • 创作年份:2004年(非上传年份)

验证依据

  • 官方网站产品页面信息
  • 音乐数据库元数据(MusicBrainz)
  • 实际购买者的详细记录

1.5 Challenge 5:数字墓碑查找

技术路径

  1. 创作者确认:John L. Bergeron
  2. 死亡信息:2005年7月22日,Vermont州
  3. 墓地定位:Resurrection Park Cemetery

最终结果

数字墓碑URL:https://www.findagrave.com/memorial/63520325/john_louis-bergeron

二、Signin题目技术分析

2.1 解题方法

  • 进程监控:直接抓包分析进程通信
  • Flag提取:从进程内存或通信数据中获取

三、Shadows of Asgard流量分析

3.1 C2通信识别

网络特征

  • 服务端口:10111
  • 通信协议:HTTP伪装
  • IP地址:106.52.166.133

初始化流程分析

{
  "agentId": "vf3d665af4a0ebc4",
  "aesKey": "WzUsMTM5LDI1NSwuLi5d",
  "aesIV": "WzEyNCw4MiwuLi5d",
  "data": "N2M3N2ZlN2ExYTdhZGMxY2E3MmZhMzY4MzgxMjUxMjQ5ZDY..."
}

3.2 AES加解密实现

密钥恢复算法

import base64, json, ast
from Crypto.Cipher import AES

# 密钥解析
aes_key_str = base64.b64decode(body["aesKey"]).decode()
key_list = ast.literal_eval(aes_key_str)
key = bytes(key_list)  # 32字节AES-256密钥

数据解密流程

# Base64解码
data_b64 = body["data"]
data_hex_ascii = base64.b64decode(data_b64)
cipher_bytes = bytes.fromhex(data_hex_ascii.decode())

# AES解密
cipher = AES.new(key, AES.MODE_CBC, iv)
plain = cipher.decrypt(cipher_bytes)

3.3 PNG隐写技术

隐写结构分析

  • PNG Chunk:tEXt类型chunk隐藏数据
  • 数据格式:Keyword + Base64编码的加密数据
  • 解密链:Base64 → Hex ASCII → AES解密 → JSON解析

隐写数据示例

tEXt chunk数据:Comment\x00ZDRmNGZhMTU1MTU1YzI4NTM5NmU2NDNiMGM4YzlhMDE2ODdjZjFlMzc1MmZj.

3.4 命令执行分析

发现的命令序列

  1. pwd - 当前目录查询(taskId: c0c6125e)
  2. drives - 磁盘信息收集
  3. whoami - 用户身份确认
  4. 文件上传操作

关键信息提取

  • C盘创建时间:2018-09-14 23:09:26
  • 代理进程路径C:\Users\dell\Desktop\Microsoft VS Code\Code.exe

3.5 Flag获取过程

文件外传分析

{
  "outputChannel": "o-2ggeq7qpt2u",
  "taskId": "shell-upload-1763017722153",
  "fileId": "dd45c631-ec19-40b1-aa1b-e3dea35d21ae",
  "filePath": "C:\Users\dell\Desktop\Microsoft VS Code\fllllag.txt",
  "fileData": "UkNURnt0aGV5IGFsd2F5cyBzYXkgUmF2ZW4gaXMgaW5hdXNwaWNpb3VzfQ=="
}

Flag解码

import base64
encoded_data = "UkNURnt0aGV5IGFsd2F5cyBzYXkgUmF2ZW4gaXMgaW5hdXNwaWNpb3VzfQ=="
flag = base64.b64decode(encoded_data).decode()
# 结果:RCTF{they always say Raven is inauspicious}

四、Chaos题目分析

4.1 解题方法

  • 终端执行:直接运行获得flag
  • 相对简单的签到类题目

五、综合技术要点总结

5.1 关键技能要求

  1. 文件格式分析:EML、XM、PNG等格式深入理解
  2. 加密算法应用:AES-CBC模式加解密实战
  3. 网络流量分析:Wireshark高级使用技巧
  4. 隐写技术识别:多媒介隐写方案识别与破解
  5. OSINT调查:开源情报收集与验证

5.2 工具链推荐

  • 音频处理:OpenMPT、MilkyTracker
  • 流量分析:Wireshark
  • 加解密:Python + PyCryptodome
  • 十六进制编辑:HxD
  • OSINT工具:各种存档站、数据库查询

5.3 解题思维模式

  1. 数据流追踪:从原始数据到最终结果的完整路径
  2. 交叉验证:多源信息对比确认
  3. 协议逆向:自定义协议的解析与理解
  4. 隐蔽通道识别:非常规通信方式的发现与分析

本教学文档涵盖了RCTF多个题目的详细技术解析,重点突出了实际攻防中的关键技术点和解题思路,为CTF参赛者和安全研究人员提供了完整的学习路径。

RCTF 题目综合教学文档 一、Wanna Feel Love 题目解析 1.1 Challenge 1:邮件隐写分析 技术要点 文件格式 :EML格式邮件文件分析 编码方式识别 :Base64、Quoted-Printable等邮件编码 多部分邮件解析 :递归遍历MIME结构 实现代码分析 关键发现 邮件正文中隐藏的垃圾邮件文本包含重要信息 通过分析邮件各部分内容,提取隐藏的"低语"信息 1.2 Challenge 2:XM音频文件隐写 技术原理 XM格式 :Extended Module音乐文件格式 峰值编码 :通过音频波形峰值传递二进制信息 采样率转换 :将音乐数据转换为可分析的波形 解码步骤 文件转换 :使用OpenMPT/MilkyTracker将XM转为WAV 参数设置 :确定采样率、位深度等关键参数 峰值检测 :滑动窗口分析波形绝对值最大值 比特提取 :阈值判断生成二进制序列 核心算法 解码结果 隐藏信息:"I Feel Fantastic heyheyhey" 1.3 Challenge 3:YouTube视频溯源 OSINT技术要点 视频ID识别 :rLy-AwdCOmI 时间线重建 :上传日期2009-04-15 上传者确认 :Creepyblog账号 验证方法 多源交叉验证(Wiki、存档站、考据文章) Internet Archive历史记录查询 相关社区讨论分析 1.4 Challenge 4:数字商品溯源 关键信息 购买链接 :http://www.androidworld.com/prod68.htm 发件人 :Android World / Chris Willis 创作年份 :2004年(非上传年份) 验证依据 官方网站产品页面信息 音乐数据库元数据(MusicBrainz) 实际购买者的详细记录 1.5 Challenge 5:数字墓碑查找 技术路径 创作者确认 :John L. Bergeron 死亡信息 :2005年7月22日,Vermont州 墓地定位 :Resurrection Park Cemetery 最终结果 数字墓碑URL:https://www.findagrave.com/memorial/63520325/john_ louis-bergeron 二、Signin题目技术分析 2.1 解题方法 进程监控 :直接抓包分析进程通信 Flag提取 :从进程内存或通信数据中获取 三、Shadows of Asgard流量分析 3.1 C2通信识别 网络特征 服务端口 :10111 通信协议 :HTTP伪装 IP地址 :106.52.166.133 初始化流程分析 3.2 AES加解密实现 密钥恢复算法 数据解密流程 3.3 PNG隐写技术 隐写结构分析 PNG Chunk :tEXt类型chunk隐藏数据 数据格式 :Keyword + Base64编码的加密数据 解密链 :Base64 → Hex ASCII → AES解密 → JSON解析 隐写数据示例 3.4 命令执行分析 发现的命令序列 pwd - 当前目录查询(taskId: c0c6125e) drives - 磁盘信息收集 whoami - 用户身份确认 文件上传操作 关键信息提取 C盘创建时间 :2018-09-14 23:09:26 代理进程路径 : C:\Users\dell\Desktop\Microsoft VS Code\Code.exe 3.5 Flag获取过程 文件外传分析 Flag解码 四、Chaos题目分析 4.1 解题方法 终端执行 :直接运行获得flag 相对简单的签到类题目 五、综合技术要点总结 5.1 关键技能要求 文件格式分析 :EML、XM、PNG等格式深入理解 加密算法应用 :AES-CBC模式加解密实战 网络流量分析 :Wireshark高级使用技巧 隐写技术识别 :多媒介隐写方案识别与破解 OSINT调查 :开源情报收集与验证 5.2 工具链推荐 音频处理 :OpenMPT、MilkyTracker 流量分析 :Wireshark 加解密 :Python + PyCryptodome 十六进制编辑 :HxD OSINT工具 :各种存档站、数据库查询 5.3 解题思维模式 数据流追踪 :从原始数据到最终结果的完整路径 交叉验证 :多源信息对比确认 协议逆向 :自定义协议的解析与理解 隐蔽通道识别 :非常规通信方式的发现与分析 本教学文档涵盖了RCTF多个题目的详细技术解析,重点突出了实际攻防中的关键技术点和解题思路,为CTF参赛者和安全研究人员提供了完整的学习路径。