⏳:2021-11-27
Snake
查壳 发现upx壳
代码脱壳无果 之后手脱 ida32打开
shift+f12查找相关字符串

找到base64表和加密数据
先用base64解码发现没那么简单
之后查找密文引用处 做一个简单的分析

为什么确定是变码base64
理由:查找引用 sub_40186F 函数的函数中 找到开头函数 进入查看
(这里的变码函数是从 main 函数起始开始一步步查找找到的)

函数内部逻辑:

找一个在线C编译或者自己复制代码查看 得出结果
ABCDEFGHIJKLMNOPQRST0123456789+/UVWXYZabcdefghijklmnopqrstuvwxyz
退回查看异或操作具体内容 逻辑比较简单

写出脚本求解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import base64 import string
table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
model = "ABCDEFGHIJKLMNOPQRST0123456789+/UVWXYZabcdefghijklmnopqrstuvwxyz"
flag = "7G5d5bAy+TMdLWlu5CdkMTlcJnwkNUgb2AQL3CcmPpVf6DAp72scOSlb"
STR = list(base64.b64decode(flag.translate(str.maketrans(model,table))))
for i in range(1,11,1): for j in range(len(STR)): if(len(STR) % i): STR[j] ^= (j + i) else: STR[j] ^= ((j % i) + j)
for i in range(len(STR)): print(chr(STR[i]),end='')
|
flag{5e2200bc-f21a-5421-a90b-57dec19fe196}