Easy Come Easy Go - smileyCTF 2025
#smileyCTF_2025 #Golang
Goのバイナリが与えられる
code:python
import string
from functools import reduce
def func1(x, _):
v1 = [
0x47300FC1F251843E,
0x6C1AB14C445D2D6F,
0x0257CC82AC421251,
]
v1 = reduce(lambda a, b: a + b, int.to_bytes(it, 8, 'little') for it in v1)
return v1x
def func2(x, i):
v1 = [
0x0912EFA6C49BD6BE,
0x6A163B0583444D46,
0x24E61FF4643EA395,
]
v1 = reduce(lambda a, b: a + b, int.to_bytes(it, 8, 'little') for it in v1)
return x ^ v1i
elem = 21, 23, 1, 3, 14, 18, 13, 0, 20, 10, 6, 11, 17, 2, 15, 8, 9, 12, 16, 4, 22, 7, 5, 19,
v10 = [
0x58C4D6920D33EF5C,
0x77250476F61923AC,
0xF5903C93901FDBD0,
]
v10 = reduce(lambda a, b: a + b, int.to_bytes(it, 8, 'little') for it in v10)
flag = []
for i in range(len(elem)):
for c in string.printable:
v1 = func1(elemi, i) ^ ord(c)
if v10i == func2(v1, i):
flag.append(c)
break
print(''.join(flag))