目录
一. 特殊的Base 64
-
查壳,用ida64打开
- 查找字符串,找到关键词"The flag is right!!!!!!!!!"还看到类似于base64转码的字符串
-
大概分析后发现base64Encode()函数是进行特殊的base64转码的函数,转码的规律由原先的"ABCD..."改成了"AaBb..."最后比较rightflag和result处的值
-
写出特殊的转换代码
import base64 str1 = "mTyqm7wjODkrNLcWl0eqO8K8gc1BPk1GNLgUpI==" str2 = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0987654321/+" str3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" a = str.maketrans(str2,str3) b = str1.translate(a) print(base64.b64decode(b).decode())
-
得出结果
flag{Special_Base64_By_Lich}
二. Reverse3
- 首先查壳,用ida打开
- 查找字符串,看到right flag!关键字以及"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",猜测该题考查内容包含base 64转码
- 分析汇编代码即f5伪代码
发现输入的str字符串会先由sub_4110BE函数进行base64转码,然后进行循环再与str2进行比较
4. 求输入的str就是写一个倒推的代码
import base64
str1 = 'e3nifIH9b_C@n@dH'
str2 = ''
for i in range(len(str1)):
str2 += chr(ord(str1[i]) - i)
print(base64.b64decode(str2).decode())
5. 得出答案 {i_l0ve_you}