[羊城杯 2020]easyre
查壳,莫得,64 位,载入 IDA,查看主函数
看到关键的三个加密函数,第一个就是进行了个 base64,第二个进行移位变换,第三个对字符进行了一些变换
encode_three 爆破就可以,然后按照 encode_two 的逻辑重组字符串最后进行 base64decode 即可获得 flag
exp 如下:
from base64 import b64encode, b64decode
Str2 = "EmBmP5Pmn7QcPU4gLYKv5QcMmB3PWHcP5YkPq3=cT6QckkPckoRG"
key = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890+/="
#encode_three
tmp = ''
for i in range(len(Str2)):
for j in key:
if ord(j) <= 64 or ord(j) > 90:
if ord(j) <= 96 or ord(j) > 122:
if ord(j) <= 47 or ord(j) > 57:
num = j
else:
num = chr((ord(j) - 48 + 3) % 10 + 48)
else:
num = chr((ord(j) - 97 + 3) % 26 + 97)
else :
num = chr((ord(j) - 65 + 3) % 26 + 65)
if num == Str2[i]:
tmp += j
break
print(tmp)
#BjYjM2Mjk4NzMR1dIVHs2NzJjY0MTEzM2VhMn0=zQ3NzhhMzhlOD
#encode_two
flag = tmp[13:26] + tmp[39:] + tmp[:13] + tmp[26:39]
#encode_one
print(b64decode(flag))
#flag{672cc4778a38e80cb362987341133ea2}