下载题目
国际惯例,先查壳
32位无壳程序
用IDA打开
F5看反编译
经过判断加密函数在sub_401080
点进去
加密完又调用了sub_401030
点进去
综合起来看就是先进行大小写转换,再换表base64加密
上exp
import base64
flag = ''; dict = {}; offset = 10
orgin = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
for i in range(len(orgin)):
dict[orgin[i]] = orgin[i]
for i in range(6, 15): #sub_401000()
dict[orgin[i]] , dict[orgin[i+offset]] = dict[orgin[i+offset]] , dict[orgin[i]] # 恢复base64密钥表
secret = 'zMXHz3TIgnxLxJhFAdtZn2fFk3lYCrtPC2l9'.swapcase() #sub_401030()
for i in range(len(secret)):
flag += dict[secret[i]]
flag = base64.b64decode(flag)
print(flag)
运行得到flag:flag{bAse64_h2s_a_Surprise}
提交
得分