buuoj-[羊城杯 2020]easyre
1.无壳64bit 直接打开找到main函数
2.逻辑很清晰,flag经过三重加密,变成了str2
3.那就通过密文,由第三重加密推回就行了
4.第三重
不知道是什么加密,自己写了下试试,是ascii+3,带循环的,如a-->d,z-->c这样子,那咱们减三就行了
str1='EmBmP5Pmn7QcPU4gLYKv5QcMmB3PWHcP5YkPq3=cT6QckkPckoRG'
str2=''
for al in str1:
if ord(al)>=ord('a') and ord(al)<=ord('z'):
str2+=chr((ord(al) - 97 - 3) % 26 + 97)
elif ord(al) >= ord('A') and ord(al) <= ord('Z'):
str2+=chr((ord(al) - 65 - 3) % 26 + 65)
elif ord(al) >= ord('0') and ord(al) <= ord('9'):
str2+=chr((ord(al) - 48 - 3) % 10 + 48)
else:
str2+=al
print(str2)
得到BjYjM2Mjk4NzMR1dIVHs2NzJjY0MTEzM2VhMn0=zQ3NzhhMzhlOD
5.第二重
是排序,密文的第27--40个放最前面,第0-13个接上,40--52往后接上,14--27在最后面
那就很简单了:先把它分块,然后排序排回去
str='BjYjM2Mjk4NzMR1dIVHs2NzJjY0MTEzM2VhMn0=zQ3NzhhMzhlOD'
for i in range(len(str)):
print(str[i],end='')
if (i+1)%13==0:
print()
分块后手动调序就行:
BjYjM2Mjk4NzM
R1dIVHs2NzJjY
0MTEzM2VhMn0=
zQ3NzhhMzhlOD
重新组合得到:R1dIVHs2NzJjYzQ3NzhhMzhlODBjYjM2Mjk4NzM0MTEzM2VhMn0=
6.第一重,是base64
表在这
不知道为什么多了一个A
解一下试试
因为是标准表,直接网站解就行,得到:GWHT{672cc4778a38e80cb362987341133ea2}