BMZCTF Re

本文介绍了四个逆向工程和密码学的挑战案例,涉及C++程序调试、16进制编码解密、Base64编码解码等技巧。通过OllyDbg等工具,分析程序执行流程,解密隐藏的flag,揭示了逆向工程在解决网络技术大赛中的重要作用。
摘要由CSDN通过智能技术生成

baby_reverse

下载附件,是一个没有后缀的文件,用文本编辑器打开,发现里面是16进制的编码
flag的16进制编码是666c6167,在文件中查找,发现一长串,进行16进制密码后得到flag
在这里插入图片描述
在这里插入图片描述

山东省大学生网络技术大赛-cm50

Pe查看文件,是C++编写的32位可执行文件,放入ollydubg进行调试,全局搜索字符串,看到关键字:
在这里插入图片描述

U r right!\n\n
定位,并向上查找pub ebp
在这里插入图片描述

逐步运行,并在输入时,随意输入 ,发现在
在这里插入图片描述

会显示出flag
我们此设断点,运行,得到:flag{Pe_cRackme1_,不完整的flag。继续向下调试,看到会对后续的字符串进行0x31,0x30,0x32,0x34,0x7D的对比,将16进行转为ascii,得到1024}。将得到的两段字符串进行拼接,可以得到flag。

Reverse2

下载附件为一个exe的可执行文件,用pe工具扫描:
在这里插入图片描述

发现为一个32位的程序,
在cmd下执行,发现只会输入一个字符串。
在这里插入图片描述

用OD打开,全局搜索字符串:
在这里插入图片描述

找到程序执行后输出的字符串:Hi~ this is a babyre
在程序中定位:
在这里插入图片描述

发现下面有好多已经在程序中定义好的变量,开头4个为0x66,0x6c,0x61,0x67,转换成ascii,正好是flag。因此将定义好的变量抄出来,并进行16进制解码,得到flag:
在这里插入图片描述

Reverse3

下载附件为两个文件,一个为c文件的源码,源码中给出了flag。可以作弊,这是非规做法。
看到源文件,是一个base64编码。下面给出了加密后的flag。直接base64解码失败。
在这里插入图片描述

修改源文件如下:
在这里插入图片描述

用gcc编译后执行,即可得到flag。
flag{76sgf17gf9asydjhatd93e73gf9}

Reverse4

下载附件是一个exe的可执行文件,运行后,需要输入flag。然后程序会判断是否正确
用OD打开,全局查找字符串,找到关键字符串:
在这里插入图片描述

双击定位,并向上查找push ebp:
在这里插入图片描述

下断点,运行程序。
发现程序会对输入的字符串进行base64编码,再每个字符的ascii码加上位序号。
如:输入12345
程序会先进行base64编码:MTIzNDU=
再对每个字符操作:
第一位M的ascii加0,编码后为M
第二位T的ascii加1,编码后为’U’
第三位I的ascii加2,编码后为K
。。。。。。以此类推
最后再和e3nifIH9b_C@n@dH进行比较。
现在知道了流程,那么反推,编写代码:

s='e3nifIH9b_C@n@dH'
tmp=''
for i in range(len(s)):
    tmp+=chr(ord(s[i])-i)
print (tmp)
s2=base64.b64decode(tmp).decode("utf-8")
print (s2)
得到`{i_l0ve_you}`。
Flag即为:`flag{i_l0ve_you}`



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值