新大网安协会专项赛(REVERSE)wp
字数 1270 2025-08-30 06:50:28
新大网安协会专项赛(REVERSE)解题教程
1. easy_reverse
题目分析
- 文件类型:64位无壳可执行文件
- 主函数逻辑:对flag(密文)进行字符替换操作
- flag内容:明文字符串直接存储在程序中
解题步骤
- 使用IDA Pro等反编译工具查看主函数
- 发现flag以明文形式存储,只需进行简单替换
- 手动添加flag格式头尾
最终flag
flag{hack1ng_fo1_fun}
2. xorrrrr
题目分析
- 文件类型:Python脚本
- 加密逻辑:输入内容与secret_key(0x52)进行异或,结果与encrypted_flag比较
解题步骤
- 分析加密逻辑:
secret_key = 0x52 encrypted_flag = b'4>35)%=\r!:;\r*;3=\r07<\r63</' - 编写解密脚本:
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)) - 运行脚本获取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解题技巧
- 字符串搜索快速定位关键代码
- 输入输出分析确定加密逻辑
- 侧信道攻击绕过复杂加密
附录:实用命令参考
-
检查文件类型:
file target -
查看可打印字符串:
strings target | less -
UPX脱壳:
upx -d target -
IDA Pro远程调试:
idaq -A -Sdebugger_script.py target -
Android APK分析:
apktool d target.apk -
动态调试Python脚本:
import pdb; pdb.set_trace()