ACECTF1.0部分题解
字数 1034 2025-08-29 08:30:24

ACECTF1.0部分题解教学文档

Binary Exploitation部分

1. Underflow题目解析

题目性质: 签到题,难度极低

解题要点:

  • 这是一个基础的缓冲区溢出题目
  • 考察最基本的栈溢出利用技术
  • 适合完全新手的入门练习

2. jumPIEng题目解析

保护机制: 开启了PIE保护

漏洞利用:

  1. 程序打印出了main函数的地址
  2. 允许用户输入一个地址并跳转到该地址
  3. 通过IDA分析发现存在后门函数

解题步骤:

  1. 接收程序输出的main函数地址
  2. 计算main函数与后门函数之间的偏移量
  3. 根据偏移量计算出后门函数的准确地址
  4. 输入计算出的地址实现跳转

关键点:

  • 虽然开启了PIE,但由于泄露了地址信息,保护实际上被绕过
  • 需要准确计算函数间的偏移量

3. Running Out of Time题目解析

题目描述: 逆向工程题目

程序逻辑:

  1. 首先生成一个随机数
  2. 需要输入正确的随机数才能进入关键函数p3xr9q_t1zz
  3. p3xr9q_t1zz函数实现简单的XOR操作

解题方法:

  • 直接绕过随机数验证部分
  • 分析发现可以直接调用p3xr9q_t1zz函数而不需要验证随机数

关键点:

  • 逆向工程中识别不必要的验证步骤
  • 直接关注核心加密/解密逻辑

Reverse Engineering部分

Significance of Reversing题目解析

题目特征:

  • 提供了一个图片文件
  • 文件名提示使用010 Editor等工具检查

发现问题:

  • 文件的16进制数据被反向排序

解题步骤:

  1. 编写脚本将16进制数据反向排序
  2. 恢复原始数据格式

加密变换规则:

*a1 = (*a1 + 14) % 94 + 33

规则解析:

  1. 可打印ASCII范围是33(到126(~),共94个字符
  2. (*a1 + 14)将字符向前移位14个位置
  3. % 94确保结果在94个字符范围内循环
  4. + 33将结果映射回33到126的范围

加密性质:

  • 这是ROT47加密的变种
  • 标准ROT47循环移位47位,而这里是移位14位
  • 属于简单的替换密码

解题关键:

  1. 识别文件格式异常
  2. 理解加密算法
  3. 实现逆向变换脚本

总结

Binary Exploitation要点

  • 地址泄露结合偏移计算
  • 保护机制的绕过技巧
  • 不必要的验证步骤识别

Reverse Engineering要点

  • 文件格式分析
  • 加密算法识别
  • 逆向变换实现

通用技巧

  • 仔细分析程序输出
  • 使用IDA等工具进行静态分析
  • 关注核心逻辑而非外围验证
  • 理解加密算法的数学原理
ACECTF1.0部分题解教学文档 Binary Exploitation部分 1. Underflow题目解析 题目性质 : 签到题,难度极低 解题要点 : 这是一个基础的缓冲区溢出题目 考察最基本的栈溢出利用技术 适合完全新手的入门练习 2. jumPIEng题目解析 保护机制 : 开启了PIE保护 漏洞利用 : 程序打印出了main函数的地址 允许用户输入一个地址并跳转到该地址 通过IDA分析发现存在后门函数 解题步骤 : 接收程序输出的main函数地址 计算main函数与后门函数之间的偏移量 根据偏移量计算出后门函数的准确地址 输入计算出的地址实现跳转 关键点 : 虽然开启了PIE,但由于泄露了地址信息,保护实际上被绕过 需要准确计算函数间的偏移量 3. Running Out of Time题目解析 题目描述 : 逆向工程题目 程序逻辑 : 首先生成一个随机数 需要输入正确的随机数才能进入关键函数p3xr9q_ t1zz p3xr9q_ t1zz函数实现简单的XOR操作 解题方法 : 直接绕过随机数验证部分 分析发现可以直接调用p3xr9q_ t1zz函数而不需要验证随机数 关键点 : 逆向工程中识别不必要的验证步骤 直接关注核心加密/解密逻辑 Reverse Engineering部分 Significance of Reversing题目解析 题目特征 : 提供了一个图片文件 文件名提示使用010 Editor等工具检查 发现问题 : 文件的16进制数据被反向排序 解题步骤 : 编写脚本将16进制数据反向排序 恢复原始数据格式 加密变换规则 : 规则解析 : 可打印ASCII范围是33(到126(~),共94个字符 (*a1 + 14) 将字符向前移位14个位置 % 94 确保结果在94个字符范围内循环 + 33 将结果映射回33到126的范围 加密性质 : 这是ROT47加密的变种 标准ROT47循环移位47位,而这里是移位14位 属于简单的替换密码 解题关键 : 识别文件格式异常 理解加密算法 实现逆向变换脚本 总结 Binary Exploitation要点 地址泄露结合偏移计算 保护机制的绕过技巧 不必要的验证步骤识别 Reverse Engineering要点 文件格式分析 加密算法识别 逆向变换实现 通用技巧 仔细分析程序输出 使用IDA等工具进行静态分析 关注核心逻辑而非外围验证 理解加密算法的数学原理