新大网安协会专项赛(REVERSE)wp
字数 1270 2025-08-30 06:50:28

新大网安协会专项赛(REVERSE)解题教程

1. easy_reverse

题目分析

  • 文件类型:64位无壳可执行文件
  • 主函数逻辑:对flag(密文)进行字符替换操作
  • flag内容:明文字符串直接存储在程序中

解题步骤

  1. 使用IDA Pro等反编译工具查看主函数
  2. 发现flag以明文形式存储,只需进行简单替换
  3. 手动添加flag格式头尾

最终flag

flag{hack1ng_fo1_fun}

2. xorrrrr

题目分析

  • 文件类型:Python脚本
  • 加密逻辑:输入内容与secret_key(0x52)进行异或,结果与encrypted_flag比较

解题步骤

  1. 分析加密逻辑:
    secret_key = 0x52
    encrypted_flag = b'4>35)%=\r!:;\r*;3=\r07<\r63</'
    
  2. 编写解密脚本:
    secret_key = 0x52
    encrypted_flag = b'4>35)%=\r!:;\r*;3=\r07<\r63</'
    
    def xor(data, key):
        return bytes([x ^ key for x in data])
    
    print(xor(encrypted_flag, secret_key))
    
  3. 运行脚本获取flag

最终flag

flag{wo_shi_xiao_ben_dan}

3. 签到题

解题步骤

  • 直接打开文件即可看到flag

4. easy_base64

题目分析

  • 文件类型:64位无壳可执行文件
  • 加密逻辑:自定义base64编码表,输入字符串编码后与密文比较

解题步骤

  1. 使用IDA Pro分析程序
  2. 查找base64Encode函数
  3. 发现使用了自定义的base64编码表
  4. 通过交叉引用找到basekey(编码表)
  5. 使用正确的编码表对密文进行解码

5. find_str

题目分析

  • 文件类型:64位ELF文件,UPX加壳
  • 特点:修改了标志位,常规工具无法脱壳

手工脱壳步骤

  1. 使用IDA Pro连接Linux远程调试
  2. 找到函数入口点
  3. 参考Linux逆向脱壳技术手动脱壳
  4. 编写脱壳脚本dump脱壳后的文件

主函数逻辑分析

  1. v17存储密文
  2. 读取用户输入到v13
  3. 进入sub_401830函数进行加密
  4. 加密结果与密文比对

关键点

  • 动调获取v14的值为0xB
  • 加密逻辑:数组右移一个字节,循环0xB次

6. bang

题目分析

  • 文件类型:APK文件,加壳保护
  • 特点:使用jadx无法直接找到入口点

解题步骤

  1. 使用雷电分析工具进行脱壳
  2. 分析dex文件找到入口点
  3. 主逻辑为equals判断账户密码
  4. flag已明文存储在代码中

验证方法

  • 启动程序验证flag是否正确

通用逆向技巧总结

1. 文件分析基础

  • 使用file命令识别文件类型
  • 使用strings查看可打印字符串
  • 使用binwalk分析文件结构

2. 加壳识别与处理

  • 常见加壳工具识别(UPX, ASPack等)
  • 手工脱壳技术
  • 动态调试脱壳方法

3. 静态分析工具

  • IDA Pro反编译与分析
  • Ghidra开源逆向工具
  • Radare2命令行工具

4. 动态分析技术

  • GDB调试Linux程序
  • Frida动态插桩
  • ADB调试Android应用

5. 常见加密算法识别

  • 异或加密特征
  • Base64变种识别
  • 常见加密库函数识别

6. CTF解题技巧

  • 字符串搜索快速定位关键代码
  • 输入输出分析确定加密逻辑
  • 侧信道攻击绕过复杂加密

附录:实用命令参考

  1. 检查文件类型:

    file target
    
  2. 查看可打印字符串:

    strings target | less
    
  3. UPX脱壳:

    upx -d target
    
  4. IDA Pro远程调试:

    idaq -A -Sdebugger_script.py target
    
  5. Android APK分析:

    apktool d target.apk
    
  6. 动态调试Python脚本:

    import pdb; pdb.set_trace()
    
新大网安协会专项赛(REVERSE)解题教程 1. easy_ reverse 题目分析 文件类型:64位无壳可执行文件 主函数逻辑:对flag(密文)进行字符替换操作 flag内容:明文字符串直接存储在程序中 解题步骤 使用IDA Pro等反编译工具查看主函数 发现flag以明文形式存储,只需进行简单替换 手动添加flag格式头尾 最终flag flag{hack1ng_fo1_fun} 2. xorrrrr 题目分析 文件类型:Python脚本 加密逻辑:输入内容与secret_ key(0x52)进行异或,结果与encrypted_ flag比较 解题步骤 分析加密逻辑: 编写解密脚本: 运行脚本获取flag 最终flag flag{wo_shi_xiao_ben_dan} 3. 签到题 解题步骤 直接打开文件即可看到flag 4. easy_ base64 题目分析 文件类型:64位无壳可执行文件 加密逻辑:自定义base64编码表,输入字符串编码后与密文比较 解题步骤 使用IDA Pro分析程序 查找base64Encode函数 发现使用了自定义的base64编码表 通过交叉引用找到basekey(编码表) 使用正确的编码表对密文进行解码 5. find_ str 题目分析 文件类型:64位ELF文件,UPX加壳 特点:修改了标志位,常规工具无法脱壳 手工脱壳步骤 使用IDA Pro连接Linux远程调试 找到函数入口点 参考Linux逆向脱壳技术手动脱壳 编写脱壳脚本dump脱壳后的文件 主函数逻辑分析 v17存储密文 读取用户输入到v13 进入sub_ 401830函数进行加密 加密结果与密文比对 关键点 动调获取v14的值为0xB 加密逻辑:数组右移一个字节,循环0xB次 6. bang 题目分析 文件类型:APK文件,加壳保护 特点:使用jadx无法直接找到入口点 解题步骤 使用雷电分析工具进行脱壳 分析dex文件找到入口点 主逻辑为equals判断账户密码 flag已明文存储在代码中 验证方法 启动程序验证flag是否正确 通用逆向技巧总结 1. 文件分析基础 使用file命令识别文件类型 使用strings查看可打印字符串 使用binwalk分析文件结构 2. 加壳识别与处理 常见加壳工具识别(UPX, ASPack等) 手工脱壳技术 动态调试脱壳方法 3. 静态分析工具 IDA Pro反编译与分析 Ghidra开源逆向工具 Radare2命令行工具 4. 动态分析技术 GDB调试Linux程序 Frida动态插桩 ADB调试Android应用 5. 常见加密算法识别 异或加密特征 Base64变种识别 常见加密库函数识别 6. CTF解题技巧 字符串搜索快速定位关键代码 输入输出分析确定加密逻辑 侧信道攻击绕过复杂加密 附录:实用命令参考 检查文件类型: 查看可打印字符串: UPX脱壳: IDA Pro远程调试: Android APK分析: 动态调试Python脚本: