[羊城杯 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}
posted @ 2022-01-16 10:50  Moominn  阅读(197)  评论(0编辑  收藏  举报