DDCTF2019 

笔者做了前俩道题。冷不丁过去一个月了、现在在此做一下WriteUp:题目链接:

1:题目1

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

2:题目2

 

reverse1:writeup:

1、程序打开后如下所示

DDCTF2019逆向分析前俩题WriteUP 随笔 第1张

2、查壳结果为UPX的壳。

DDCTF2019逆向分析前俩题WriteUP 随笔 第2张

3、UPXSHELL脱壳之后用GHIDRA打开后如下

DDCTF2019逆向分析前俩题WriteUP 随笔 第3张DDCTF2019逆向分析前俩题WriteUP 随笔 第4张DDCTF2019逆向分析前俩题WriteUP 随笔 第5张

这就程序大致的流程。我们的关键点在于确定其算法。

4、动态调试。

DDCTF2019逆向分析前俩题WriteUP 随笔 第6张

当我输入aaa时,程序内变成了===

DDCTF2019逆向分析前俩题WriteUP 随笔 第7张

当我输入bbbb时,程序内部变成了<<<<

DDCTF2019逆向分析前俩题WriteUP 随笔 第8张

经计算 我们输入的值在程序逆向思维出来是9E-该数即可。

5、解密

DDCTF2019逆向分析前俩题WriteUP 随笔 第9张DDCTF2019逆向分析前俩题WriteUP 随笔 第10张

成功拿到flag

 

 

2、reverse2 ——WriteUP

1.题目打开后如下:所示

DDCTF2019逆向分析前俩题WriteUP 随笔 第11张

2.PEID查壳结果

DDCTF2019逆向分析前俩题WriteUP 随笔 第12张

ASP的壳,看样子需要手动脱壳.

3.用OD脱壳。

(1)进程序之后按F9找到printf入口点。随后用ODdump直接脱下来

DDCTF2019逆向分析前俩题WriteUP 随笔 第13张

步骤-plugins->ODdumpEx->dump process

DDCTF2019逆向分析前俩题WriteUP 随笔 第14张

4.用IDA打开后查看大致的代码逻辑

DDCTF2019逆向分析前俩题WriteUP 随笔 第15张

看来这题是控制输入的字符串,来对v1进行赋值。并且将结果与DDCTF{reverse+}进行比对。

5.找到要分析函数模块。

DDCTF2019逆向分析前俩题WriteUP 随笔 第16张DDCTF2019逆向分析前俩题WriteUP 随笔 第17张

经过分析,现然这俩个代码块是我们需要主分析的地方。现在大致内容我们已经理清了,下一步是带壳调试。

6.找到输入函数的规则。

DDCTF2019逆向分析前俩题WriteUP 随笔 第18张

经调试,找到了scanf的输入点。这里我们去看一下对应的IDA函数的位置。

DDCTF2019逆向分析前俩题WriteUP 随笔 第19张

这里的函数过于复杂。引起生理上的不适,因此我选择动态调试分析。就是暴力方法测出输入函数的格式。

经多次检测,输入格式为 以下几个字符0123456789ABCDEF即可,其余的均会爆出invalid input错误。

因此到了下一阶段动态调试。

7.输入字符串后变成的样子。

这里有个需要注意的地方,当程序加壳的时候,会出现这种db 字符,要使用OD analysis重新分析下。

DDCTF2019逆向分析前俩题WriteUP 随笔 第20张DDCTF2019逆向分析前俩题WriteUP 随笔 第21张

经多次分析,我发现输入的一串字符串变成了base64编码形式

DDCTF2019逆向分析前俩题WriteUP 随笔 第22张

经分析,我发现我输入的一串字符串会被变成16进制,并使用base64编码与结果中的reverse+进行比对。

那接下来就是reverse+解码的时候了。因为base64经编码之后的文本为乱码显示,无法了解内部。我们需要手动解码

DDCTF2019逆向分析前俩题WriteUP 随笔 第23张

8.BASE手动解码。找出REVERSE+对应的64位字符重新编码后,成功拿到FLAG

DDCTF2019逆向分析前俩题WriteUP 随笔 第24张DDCTF2019逆向分析前俩题WriteUP 随笔 第25张

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄