소학회/워게임

[reversing]Dreamhack_simple-operation

haerim9.9 2026. 1. 13. 21:35

문제 설명

우리의 친구 아모가 미션을 주었습니다. "내가 원하는 결과가 나오도록 값을 입력해 줘!"

주어진 바이너리를 분석하고 알맞은 값을 입력하면 플래그가 출력됩니다. 플래그는 flag 파일에 있습니다.

플래그 형식은 DH{...} 입니다.

 


IDA로 주어진 문제 파일 중 chall 파일을 열어서 디컴파일된 코드를 확인했다. 실제로 실행해보면서 코드 기능을 확인해 봤는데, 랜덤 값인 v6과 입력받는 값인 v7을 XOR 연산을 한 후, 그 값을 뒤집은 결과 값을 출력해 주는 듯하다. 그리고 그 결과 값이 0xa0b4c1d7과 같으면 flag를 얻을 수 있을 것 같다.

 

뒤집은 값이 0xa0b4c1d7이어야 하니까, 뒤집기 전이 0x7d1c4b0a이어야야 한다. 즉, v6에 해당 값을 XOR한 값이 v7이 되면 된다.

(v6 XOR v7 = 0x7d1c4b0a이고, 같은 값으로 XOR 연산을 해주면 이는 연산하기 전과 같은 값이니 양변에 v6으로 XOR해준다. 그러면 v7 = 0x7d1c4b0a XOR v6이 된다.)

 

주어진 랜덤 값이 0x3cd379cc이다. 나는 이를 계산기의 프로그래머 모드를 이용하여 풀었다.

 

HEX값이니까 해당 값으로 XOR 연산을 해준다. 그리고 문제에서는 10진수로 입력을 받으니까 Decimal로 변환한 값을 입력해 준다.

플래그가 정상적으로 나온 것을 확인할 수 있다.

 

'소학회 > 워게임' 카테고리의 다른 글

[web]Dreamhack_phpreg  (0) 2026.03.23
[reversing]Dreamhack_rev-basic-1  (0) 2026.01.27
[misc]Dreamhack_Exercise: SSH  (0) 2025.11.04
[pwnable]Dreamhack_baby-bof  (0) 2025.09.30
[web]Dreamhack_session  (0) 2025.09.23