[Christmas 2020] REVERSING - lock
by jennysgapChallenge:

분석:
아... 실제 CTF에서 i-(i/param4)*param4
이 부분 때문에 풀지 못한 문제 ㅜㅜ
i/param4 정수를 나눌때는 몫만 가져온다는 걸 놓침i-(i/param4)*param4
이 식은 i%param4
로도 표현할 수 있다.
Solve:
value0 = [0x96, 0x19, 0x7, 0x11, 0x99, 0x19, 0x2, 0x11] value1 = [0xF7, 0x7B, 0x64, 0x75, 0xFC, 0x7F, 0x65, 0x79, 0xFF, 0x73, 0x6C, 0x7D, 0xF4, 0x77, 0x6D, 0x61, 0xE7, 0x6B, 0x74, 0x65, 0xEC, 0x6F, 0x75, 0x69, 0xEF, 0x63, 0x46, 0x53, 0xDA, 0x5D, 0x47, 0x57, 0xD1, 0x51, 0x4E, 0x5B, 0xD2, 0x55, 0x4F, 0x5F, 0xD9, 0x49, 0x56, 0x43, 0xCA, 0x4D, 0x57, 0x47, 0xC1, 0x41, 0x5E, 0x4B, 0xA9, 0x28, 0x30, 0x22, 0xA2, 0x2C, 0x31, 0x26, 0xA1, 0x20] value2 = [0x69, 0x22, 0x22, 0x38, 0x1F, 0x43, 0x5B, 0x1C, 0x45, 0xE, 0x3C, 0x8, 0x5, 0x5E, 0x30, 0x17, 0x5F, 0x1B, 0x6, 0x19, 0x3B, 0x44, 0x7, 0x17, 0x6E, 0x7, 0x53, 0x1E, 0x17, 0x55, 0x12] ''' num = 0x8 for i in range(0, 9): data = i - (i/num) * num # i % num print(data) ''' def sub_9fc(param1, param2, param3, param4): result = '' for i in range(param2): result += chr((param1[i] ^ param3[i%param4]) & 0xff) print(result) # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 return result def sub_b30(): param1 = [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] param2 = sub_9fc(value1, 0x3e, value0, 0x8) param1[0x6] = ord(param2[0xe]) param1[0x4] = ord(param2[0x3]) param1[0x3] = ord(param2[0xa]) param1[0x7] = ord(param2[0x11]) param1[0x1] = ord(param2[0xe]) param1[0x5] = ord(param2[0x34]) param1[0x0] = ord(param2[0x35]) param1[0x2] = ord(param2[0x2]) print(''.join(chr(x) for x in param1)) # 1ockd0or result = sub_9fc(value2, 0x1f, param1, len(param1)) return result sub_b30()
Flag:
XMAS{s4nta_can_enter_the_h0use}
반응형
블로그의 정보
jennysgap
jennysgap