re | [FlareOn3]Challenge1

这是一题win32的逆向题。

【做了好几个elf终于看到pe给我激动坏了】

主函数逻辑非常清晰:

输入密码,进行加密,然后和字符串常量进行对比。

跟进加密函数:

根据这里的encoding_map和加密方式可以很轻松的看出这是一个魔改的base64加密,解决方案与我之前做的一个题一样,直接按照加密表给他倒回去,推出正常的base64的结果,然后用工具解密【写到这里我突然疑惑了,我为什么不多写两行代码直接用脚本跑出来呢?】

不管了,直接丢脚本:

 1 encoded_flag = "x2dtJEOmyjacxDemx2eczT5cVS9fVUGvWTuZWjuexjRqy24rV29q"
 2 
 3 #ZYXABCDEFGHIJKLMNOPQRSTUVWzyxabcdefghijklmnopqrstuvw0123456789+/
 4 #ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
 5 _list = list("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")
 6 
 7 _flag = ""
 8 
 9 for i in encoded_flag:
10     if (ord(i) <= ord('W') and ord(i) >= ord('A')) or (ord(i) <= ord('w') and ord(i) >= ord('a')):
11         _flag += chr(ord(i) + 3)
12     elif i == 'X':
13         _flag += 'C'
14     elif i == 'Y':
15         _flag += 'B'
16     elif i == 'Z':
17         _flag += 'A'
18     elif i == 'x':
19         _flag += 'c'
20     elif i == 'y':
21         _flag += 'b'
22     elif i == 'z':
23         _flag += 'a'
24     else:
25         _flag += i
26     
27 print(_flag)

再解base64就行了。

原文地址:https://www.cnblogs.com/Mz1-rc/p/13688293.html