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}

猜你喜欢

转载自blog.csdn.net/Onlyone_1314/article/details/108813303