IDA로 열어보면

요런 함수가 나온다. 뭐 길게 헤멜것 없이 요약하면 다음과 같다

말로는 shuffle 이기는 한데 정작 나오는 결과는 flag에 Reverse를 취한 것일 뿐이다.
따라서 아래와 같이 나오는 문자열이 고정된다


그러면 이런식으로 flag의 format String을 이용해 Random한 XOR int 배열을 알아낼 수 있다.
따라서 서버사이드에 요청을 보내서 암호화된 플래그를 받아 위의 방식으로 Random한 int들을 알아내고 해당 값으로 복호화를 진행한다.
hex_string = ""
result = [f"0x{hex_string[i:i+2]}" for i in range(0, len(hex_string), 2)]
target_list = [int(result[-2], 16), int(result[-1], 16), int(result[-5], 16), int(result[-4], 16), int(result[-3], 16)]
string_list = ["C", "K", "{", "F", "T"]
find_list = []
index_first = 0
for j in target_list:
index = 0
for i in range(255):
if (j ^ i) == ord(string_list[index_first]):
find_list.append(i)
index += 1
index_first += 1
decoded_list = []
temp_idx = 0
for i in result:
decoded_list.append(chr(int(i, 16) ^ find_list[temp_idx % 5]))
temp_idx += 1
index = -1
for i in decoded_list:
print(decoded_list[index], end="")
index -= 1
KCTF{w0w_you_flnd_th3_l0c4tlon_0f_flag_format!}