特殊的 BASE64
-
无壳儿,直接用ida打开 ,习惯性的检索程序里的字符串
-
根据题目这道题应该是道变种的base64,在字符串列表里也看到了base64加密后的字符串,只是这个密码表跟常见的有点不大一样,常见的base64的密码表应该是
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
而这题的看到的类似密码表的字符串是AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0987654321/+
到这里,盲猜是道换表的base64 -
根据flag的提示,看一下程序逻辑,c++写的程序,逻辑挺简单
看一下加密过程
熟悉的base64编码过程就不分析了,看到这边在初始化a1密码表的时候用的是unk_489084的地址
用的密码表就是我们之前分析的字符串
-
验证猜想正确,上exp
import base64
import string
str1 = "mTyqm7wjODkrNLcWl0eqO8K8gc1BPk1GNLgUpI=="
string1 = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0987654321/+"
string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
a=str1.translate(str.maketrans(string1,string2))#利用密码表还原成正常base64编码后的字符串
#print(str1.translate(str.maketrans(string1,string2)))
print(base64.b64decode(a).decode())#base64解码
python中translate函数的用法见https://www.runoob.com/python/att-string-translate.html