lhywk 님의 블로그

[Dreamhack] r-xor-t 본문

Reversing/Dreamhack

[Dreamhack] r-xor-t

lhywk 2026. 1. 1. 02:50

문제

이 문제는 사용자에게 문자열 입력을 받아 입력값을 검증하고 플래그를 출력하는 프로그램이 주어집니다.
해당 바이너리를 분석하여 플래그를 찾으세요!

문제 풀이

IDA를 통해 먼저 코드를 분석해 보겠습니다.

main 디컴파일

해당 코드의 순서는 다음과 같습니다.

1. 값을 입력한다.

2. 입력 문자열이 64자인지 확인한다.

3. 입력값에 13을 더하고 & 0x7F을 한다.

4. 역순으로 바꾼다.

5. 3을 xor 연산한다.

6. 하드코딩된 문자열과 연산 값을 비교한다.

 

문제를 풀이하기 위한 역연산 순서는 다음과 같습니다.

1. 하드코딩된 문자열에 3을 xor 한다.

2. 역순으로 바꾼다.

3. 13을 빼고 0x7F를 & 한다.

 

input_data = "C@qpl==Bppl@<=pG<>@l>@Blsp<@l@AArqmGr=B@A>q@@B=GEsmC@ArBmAGlA=@q"

data_array = bytearray([ord(i) for i in input_data])

for i in range(64):
    data_array[i] = data_array[i] ^ 3
    
data_array.reverse()

for i in range(64):
    data_array[i] = (data_array[i] - 13) & 0x7F

for i in data_array:
    print(chr(i), end='')

페이로드는 다음과 같습니다.

'Reversing > Dreamhack' 카테고리의 다른 글

[Dreamhack] Recover  (0) 2026.01.18
[Dreamhack] Easy Assembly  (0) 2026.01.10
[Dreamhack] Small Counter  (0) 2025.12.28
[Dreamhack] Check Return Value  (0) 2025.12.26
[Dreamhack] Check Function Argument  (0) 2025.12.26