首届CCF智能汽车大赛(CCF IVC 2025) 汽车安全攻防赛writeup
字数 2232 2025-09-01 11:26:02

CCF智能汽车大赛(CCF IVC 2025)汽车安全攻防赛Writeup教学文档

1. 扭曲爱德华曲线加密系统(Crypto Curve)

1.1 题目分析

题目实现了一个基于扭曲爱德华曲线(Twisted Edwards Curve)的加密系统,主要包含以下功能:

  • 曲线点加法(Add)
  • 标量乘法(C_multiplication)
  • 密钥生成(get_key)
  • 共享密钥生成(get_shared_secret)

1.2 解题思路

  1. 理解曲线运算

    • 扭曲爱德华曲线的加法公式为简化形式,在特定模下运算
    • 题目给出的Add函数实现了这种运算
  2. 映射到乘法群

    • 通过映射f(P)将曲线上的点映射到乘法群
    • 这个映射具有同态性质:f(nP) = f(P)^n
  3. 计算离散对数

    • 公钥A是生成元G的倍数:A = n_a*G
    • 通过映射f,将曲线上的离散对数问题转化为乘法群上的离散对数问题
    • 在乘法群中可以使用Pohlig-Hellman算法计算离散对数
  4. 恢复共享密钥

    • 共享密钥是n_a*B的x坐标
    • 使用标量乘法计算S = C_multiplication(B, n_a)
    • 取S的x坐标作为共享密钥
  5. 解密flag

    • 用共享密钥生成AES密钥
    • 解密密文C

1.3 解题代码

# 需要根据具体曲线参数实现
# 主要步骤:
# 1. 将曲线点映射到乘法群
# 2. 在乘法群中解离散对数
# 3. 计算共享密钥
# 4. AES解密

2. NFSR流密码(nfsr)

2.1 题目分析

这是一个经典的多次NFSR(非线性反馈移位寄存器)流密码题目。

2.2 解题思路

  1. 分析NFSR的结构和反馈函数
  2. 利用已知明文或密文特性恢复初始状态
  3. 重建密钥流

2.3 解题代码

# 需要根据具体NFSR实现
# 主要步骤:
# 1. 分析NFSR结构
# 2. 恢复初始状态
# 3. 生成密钥流解密

3. Web Easylogin

3.1 题目分析

原题参考:https://blog.csdn.net/C_c9527/article/details/141907106

3.2 解题思路

  1. 哈希长度扩展攻击

    • 获取初始token
    • 使用工具hash_ext_attack生成新的hash值
    • 密钥长度为13(uniqid()生成13位数字)
    • 扩展字符可以任意选择
  2. 构造新token

    • 得到新的明文和哈希后
    • 根据原本的token格式,需要base64编码然后拼接
    • 注意先URL解码再base64编码

3.3 解题步骤

  1. 使用工具生成攻击数据:

    python hash_ext_attack.py
    
  2. 构造新token:

    Z3Vlc3SAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAcA==.632dadad9db512bb42ee5c5101e50f85
    
  3. 提交得到flag:

    flag{ba10357c-ef0f-4089-93b6-69fa342e03fd}
    

4. Serp

4.1 题目分析

  1. 使用dirsearch扫描发现.git泄露
  2. 使用GitHack工具获取源码

4.2 解题步骤

  1. 扫描目录:

    dirsearch -u http://target
    
  2. 获取源码:

    python GitHack.py http://target/.git/
    
  3. 分析源码构造攻击链

  4. 实施攻击获取flag

5. IOV VIN

5.1 题目分析

  1. 流量包分析:

    • 包含蓝牙连接和传输的十六进制数据
    • 成功的数据为:
      6435303662323636643532656334303563626434303961363132653464633735643236353661393131346166326231663266383363303731653266306532646437396464
      
  2. APK分析:

    • 入口点定位
    • 发现VIN码加密处理过程
    • 加密函数在native层的so文件中

5.2 加密过程

  1. 获取输入字符串
  2. 使用密钥:"MySecretKey123!@#"
  3. 调用enhancedEncrypt函数加密
  4. 使用bytesToHex将结果转为十六进制

5.3 解题步骤

  1. 逆向分析so文件找到加密函数
  2. 编写解密脚本
  3. 解密流量包中的十六进制数据
  4. 获取flag:
    flag{202483734649767676649}
    

6. MISC GPS

6.1 解题步骤

  1. 打开GPX文件
  2. 查找异常轨迹点
  3. 在文件中查找相近坐标
  4. 分析坐标差异获取flag

7. OTA-流量

7.1 题目分析

  1. 车联网流量包包含:

    • init文件
    • download文件
    • handshake文件(JSON格式)
  2. handshake内容示例:

    {
      "session_key": "AES密钥",
      "other_data": "..."
    }
    

7.2 解题步骤

  1. 分析handshake文件确定加密方式为AES-CBC
  2. session_key对应AES的key
  3. 编写解密示例:
    from Crypto.Cipher import AES
    
    # 使用session_key作为key
    cipher = AES.new(key, AES.MODE_CBC, iv)
    plaintext = cipher.decrypt(encrypted_data)
    

8. RE ezapk

8.1 题目分析

  1. 使用Jadx反编译APK
  2. 发现flag可能是车辆访问凭证
  3. 加载myappication so文件

8.2 加密分析

  1. 使用魔改RC4加密:
    • 非标准S盒
    • 6字节固定密钥
  2. 密文与rodata中的26字节模板比对
  3. 匹配则返回"VEHICLE_ACCESS_GRANTED"

8.3 解题步骤

  1. 使用IDA反编译so文件
  2. 分析RC4实现:
    • S盒位置:xmmword_F1E0 → F2D0 (共256字节)
    • RC4密钥:11 22 33 44 55 66
  3. 注意反向RLE(游程编码)处理
  4. 解密得到原始凭证:
    flag{ccan_cccneeeede_careeee!?}
    
    解释:
    • c2 → cc
    • c3 → ccc
    • e4 → eeee

9. Algorithm

9.1 解题步骤

  1. 动态调试获取flag数据
  2. 将16进制数据转换为字符串

10. PWN pwn-3

10.1 漏洞分析

  1. 典型栈溢出漏洞
  2. vuln()函数中定义128字节缓冲区buf[128]
  3. 使用read()读取0x100(256)字节,明显溢出
  4. 提供libc-2.27.so,可能启用tcache机制
  5. 程序未开启PIE(地址随机化)

10.2 利用思路

  1. 使用IDA找到所需地址
  2. 构造ROP链
  3. 利用栈溢出控制程序流

10.3 解题脚本

from pwn import *

# 根据实际地址编写利用代码
# 主要步骤:
# 1. 构造溢出payload
# 2. 布置ROP链
# 3. 获取shell或直接读取flag

总结

本writeup涵盖了CCF IVC 2025汽车安全攻防赛中的多个题目,涉及密码学、Web安全、逆向工程、二进制利用等多个领域。关键点包括:

  1. 扭曲爱德华曲线的数学特性和加密系统分析
  2. 哈希长度扩展攻击的实际应用
  3. 信息泄露(.git)的利用
  4. 蓝牙协议和VIN码加密分析
  5. RC4算法的魔改与逆向
  6. 经典栈溢出漏洞的利用

每个题目都需要结合具体场景和提供的线索进行分析,综合运用各种安全技术解决问题。

CCF智能汽车大赛(CCF IVC 2025)汽车安全攻防赛Writeup教学文档 1. 扭曲爱德华曲线加密系统(Crypto Curve) 1.1 题目分析 题目实现了一个基于扭曲爱德华曲线(Twisted Edwards Curve)的加密系统,主要包含以下功能: 曲线点加法(Add) 标量乘法(C_ multiplication) 密钥生成(get_ key) 共享密钥生成(get_ shared_ secret) 1.2 解题思路 理解曲线运算 : 扭曲爱德华曲线的加法公式为简化形式,在特定模下运算 题目给出的Add函数实现了这种运算 映射到乘法群 : 通过映射f(P)将曲线上的点映射到乘法群 这个映射具有同态性质:f(nP) = f(P)^n 计算离散对数 : 公钥A是生成元G的倍数:A = n_ a* G 通过映射f,将曲线上的离散对数问题转化为乘法群上的离散对数问题 在乘法群中可以使用Pohlig-Hellman算法计算离散对数 恢复共享密钥 : 共享密钥是n_ a* B的x坐标 使用标量乘法计算S = C_ multiplication(B, n_ a) 取S的x坐标作为共享密钥 解密flag : 用共享密钥生成AES密钥 解密密文C 1.3 解题代码 2. NFSR流密码(nfsr) 2.1 题目分析 这是一个经典的多次NFSR(非线性反馈移位寄存器)流密码题目。 2.2 解题思路 分析NFSR的结构和反馈函数 利用已知明文或密文特性恢复初始状态 重建密钥流 2.3 解题代码 3. Web Easylogin 3.1 题目分析 原题参考:https://blog.csdn.net/C_ c9527/article/details/141907106 3.2 解题思路 哈希长度扩展攻击 : 获取初始token 使用工具hash_ ext_ attack生成新的hash值 密钥长度为13(uniqid()生成13位数字) 扩展字符可以任意选择 构造新token : 得到新的明文和哈希后 根据原本的token格式,需要base64编码然后拼接 注意先URL解码再base64编码 3.3 解题步骤 使用工具生成攻击数据: 构造新token: 提交得到flag: 4. Serp 4.1 题目分析 使用dirsearch扫描发现.git泄露 使用GitHack工具获取源码 4.2 解题步骤 扫描目录: 获取源码: 分析源码构造攻击链 实施攻击获取flag 5. IOV VIN 5.1 题目分析 流量包分析: 包含蓝牙连接和传输的十六进制数据 成功的数据为: APK分析: 入口点定位 发现VIN码加密处理过程 加密函数在native层的so文件中 5.2 加密过程 获取输入字符串 使用密钥:"MySecretKey123 !@#" 调用enhancedEncrypt函数加密 使用bytesToHex将结果转为十六进制 5.3 解题步骤 逆向分析so文件找到加密函数 编写解密脚本 解密流量包中的十六进制数据 获取flag: 6. MISC GPS 6.1 解题步骤 打开GPX文件 查找异常轨迹点 在文件中查找相近坐标 分析坐标差异获取flag 7. OTA-流量 7.1 题目分析 车联网流量包包含: init文件 download文件 handshake文件(JSON格式) handshake内容示例: 7.2 解题步骤 分析handshake文件确定加密方式为AES-CBC session_ key对应AES的key 编写解密示例: 8. RE ezapk 8.1 题目分析 使用Jadx反编译APK 发现flag可能是车辆访问凭证 加载myappication so文件 8.2 加密分析 使用魔改RC4加密: 非标准S盒 6字节固定密钥 密文与rodata中的26字节模板比对 匹配则返回"VEHICLE_ ACCESS_ GRANTED" 8.3 解题步骤 使用IDA反编译so文件 分析RC4实现: S盒位置:xmmword_ F1E0 → F2D0 (共256字节) RC4密钥:11 22 33 44 55 66 注意反向RLE(游程编码)处理 解密得到原始凭证: 解释: c2 → cc c3 → ccc e4 → eeee 9. Algorithm 9.1 解题步骤 动态调试获取flag数据 将16进制数据转换为字符串 10. PWN pwn-3 10.1 漏洞分析 典型栈溢出漏洞 vuln()函数中定义128字节缓冲区buf[ 128 ] 使用read()读取0x100(256)字节,明显溢出 提供libc-2.27.so,可能启用tcache机制 程序未开启PIE(地址随机化) 10.2 利用思路 使用IDA找到所需地址 构造ROP链 利用栈溢出控制程序流 10.3 解题脚本 总结 本writeup涵盖了CCF IVC 2025汽车安全攻防赛中的多个题目,涉及密码学、Web安全、逆向工程、二进制利用等多个领域。关键点包括: 扭曲爱德华曲线的数学特性和加密系统分析 哈希长度扩展攻击的实际应用 信息泄露(.git)的利用 蓝牙协议和VIN码加密分析 RC4算法的魔改与逆向 经典栈溢出漏洞的利用 每个题目都需要结合具体场景和提供的线索进行分析,综合运用各种安全技术解决问题。