这是一题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就行了。