
해당 문제를 다운받고 바이너리를 실행하면 random number을 출력하고 input?이라는 문구와 함께 입력란이 나온다. 아무거나 입력해보면 result라는 문구가 출력되고 특정한 문자가 출력되며 try again이라고 출력된다. 따라서 알맞는 입력값을 찾는 것이 이 문제의 목표인것 같다.
또한 해당 문제 폴더에 flag를 확인해보면 DH{sample}이라고 출력되는 것을 봐선, flag 파일에 flag가 저장되는것 같다.
IDA 분석

flag 파일을 실행하고 해당 파일을 읽고 buf에 저장한 뒤에 파일 종료
사용자에게 특정한 값 입력받음
v11에 입력 받은 문자열(v7)과 v6와 xor 연산하여 저장
7번 반복하여 s1의 i번째 배열에 s[7-i] 저장 --> a0b4c1d7를 반대로
** s1과 7d1c4b0a가 같으면 Congrats! 출력하고 flag 출력 **
해결 방법 : 어떤 값을 입력하면 s1과 7d1c4b0a과 같아지는지 알아내면 됨
역연산
<핵심 연산>
v11(결괏값) = v6(랜덤한 숫자) ^ v7(사용자 입력값)
v7 = v6 ^ v11
v7의 값이 배열 s에 저장됨
s1[i] = s[7-i]
<역연산 코딩 아이디어>
랜덤으로 출력되는 값을 받아옴
v7 = v6(받아온 값) ^ v1(결괏값)
v7 = v6 ^ 7d1c4b0a
<풀이>
random number : 0x351dcb8d
0x351dcb8d ^ 0x7d1c4b0a 계산
= 1208057991를 입력
flag 획득
flag : DH{cc0017076ad93f32c8aaa21bea38af5588d95d2cdc9cf48760381cc84df4668e}
'CTF & Wargame(REVERSING)' 카테고리의 다른 글
| [dreamhack] 비기너 rev-basic-0 (0) | 2025.03.06 |
|---|---|
| [dreamhack] 비기너 rev-basic-1 (0) | 2025.03.06 |
| [dreamhack] level 1 아 문제 이름 뭘로하지 문제 풀이.. (1) | 2025.03.04 |
| [dreamhack] level 2 ezmix (0) | 2025.02.25 |
| [dreamhack] level 2 crc 문제 풀이 (0) | 2025.02.24 |