bugku-逆向-7、love

首先下载reverse_3.exe,再用PEiD查壳:
在这里插入图片描述
无壳,是用C++写的控制台程序。再用IDA打开,F5反编译查看源代码:
在这里插入图片描述

我们发现代码的主要逻辑就是输入一串flag字符串Str,Str经过sub_4110BE函数,返回给v1一个字符串,v1再复制给Dest字符数组,Dest数组经过一个for循环的逐个加运算,最后将得到的Dest字符数组和Str2字符串’e3nifIH9b_C@n@dH’比较是否相等,相等则输出rigth flag!
点开sub_4110BE函数:
在这里插入图片描述

刚开始觉得这个函数怎么这么复杂,后来看到下面的aAbcdefghijklmn[]数组,结合函数的作用是将三个字符一组转化成四个字符,才发现它就是Base64编码:
在这里插入图片描述

所以,我们要获得flag就要先按for循环的逐个减运算,然后Base64解码即可。
Python代码如下:

# py -3
# -*- coding: utf-8 -*-

import base64

Str2 = "e3nifIH9b_C@n@dH"
length = len(Str2)
str1 = ""
for i in range(0,length,1):
    str1 += chr(ord(Str2[i]) - i)
# e2lfbDB2ZV95b3V9
print(str1)
result = str(base64.b64decode(str1), "utf-8")
# {i_l0ve_you}
print(result)

得到flag:{i_l0ve_you}

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值