DDCTF2019逆向分析前俩题WriteUP
2024-09-04 19:20:50
DDCTF2019
笔者做了前俩道题。冷不丁过去一个月了、现在在此做一下WriteUp:题目链接:
1:题目1
reverse1:writeup:
1、程序打开后如下所示
2、查壳结果为UPX的壳。
3、UPXSHELL脱壳之后用GHIDRA打开后如下
这就程序大致的流程。我们的关键点在于确定其算法。
4、动态调试。
当我输入aaa时,程序内变成了===
当我输入bbbb时,程序内部变成了<<<<
经计算 我们输入的值在程序逆向思维出来是9E-该数即可。
5、解密
成功拿到flag
2、reverse2 ——WriteUP
1.题目打开后如下:所示
2.PEID查壳结果
ASP的壳,看样子需要手动脱壳.
3.用OD脱壳。
(1)进程序之后按F9找到printf入口点。随后用ODdump直接脱下来
步骤-plugins->ODdumpEx->dump process
4.用IDA打开后查看大致的代码逻辑
看来这题是控制输入的字符串,来对v1进行赋值。并且将结果与DDCTF{reverse+}进行比对。
5.找到要分析函数模块。
经过分析,现然这俩个代码块是我们需要主分析的地方。现在大致内容我们已经理清了,下一步是带壳调试。
6.找到输入函数的规则。
经调试,找到了scanf的输入点。这里我们去看一下对应的IDA函数的位置。
这里的函数过于复杂。引起生理上的不适,因此我选择动态调试分析。就是暴力方法测出输入函数的格式。
经多次检测,输入格式为 以下几个字符0123456789ABCDEF即可,其余的均会爆出invalid input错误。
因此到了下一阶段动态调试。
7.输入字符串后变成的样子。
这里有个需要注意的地方,当程序加壳的时候,会出现这种db 字符,要使用OD analysis重新分析下。
经多次分析,我发现输入的一串字符串变成了base64编码形式
经分析,我发现我输入的一串字符串会被变成16进制,并使用base64编码与结果中的reverse+进行比对。
那接下来就是reverse+解码的时候了。因为base64经编码之后的文本为乱码显示,无法了解内部。我们需要手动解码
8.BASE手动解码。找出REVERSE+对应的64位字符重新编码后,成功拿到FLAG
最新文章
- RAM清理器
- [SHELL] 修改xml的内容
- Redis复制与可扩展集群搭建
- sqlserver查找表在哪个数据库脚本
- C++之路进阶——bzoj3524(Couriers)
- http 303 307 302 状态码理解
- Android ROM 备书
- P163、面试题29:数组中出现次数超过一半的数字
- CAS单点登录配置[1]:准备工作
- OPC客户端的进程安全初始化
- 图片样式 scaleType 属性
- ng-repeat-start ng-repeat-end 的使用
- hdu1079 Calendar Game
- Python学习笔记 - 生成器generator
- Linux-Kconfig总结与分析
- python:利用pymssql模块操作SQL server数据库
- SpringBoot使用HttpClient远程调用
- 洛谷 P1546 最短网络 Agri-Net
- PHP 支付类库, cURL开源HTTP类库
- hadoop资料
热门文章
- OpenCV2.4.11+VS2012的环境配置+“fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突”的问题解决
- 【动态规划】luoguP1941 飞扬的小鸟
- pip install mysqlclient 报错:error: Microsoft Visual C++ 14.0 is required.
- lsof指令使用简介
- RN与现有的原生app集成
- Java测试技巧
- AHB2reg接口转换
- 生物信息学练习2- Biom-format
- initcall机制
- HDU 4003 Find Metal Mineral