Iriton's log

[Dreamhack] Reversing Basic Challenge #0 본문

Reversing/Wargame

[Dreamhack] Reversing Basic Challenge #0

Iriton 2024. 3. 27. 15:36

 

문제 파일을 다운로드 하고 기존 사용하던 올리디버거로 파일을 열었는데,

실행이 안 됐다.

 

 

새로운 디버거 x64dbg를 설치하니 실행이 잘 됐다.

프로그램을 실행하면 그냥 Input: 이 뜨고 내가 문자를 입력하면 자동 종료가 된다.

디버거를 열어서 문자열 검색을 진행했다.

내가 찾으려고 한 건 Input이기 때문에 해당 코드로 이동한다.

 

어떤 함수를 호출하고, test 명령어가 나온 후 Correct와 Wrong으로 나뉜다.

eax 값을 검사하여 값이 0이면 Wrong, 1이면 Correct를 띄우는 것이다.

(TEST 연산이란 두 피연산자 사이에 AND 연산을 하고, 결과가 0인 경우 ZF가 1로 세팅되지만 결과값을 저장하지는 않는다. 단독 사용은 불가하며 JMP문과 같은 이동 명령어와 함께 사용된다.)

 

우선 저 함수로 들어가 봐야 한다.

 

문자열이 대놓고 보이긴 하지만 분석을 좀 해 보자면,

여기서도 eax가 0인지 1인지 판별한다.

0이면 rsp+20에 0을, 1이면 rsp+20에 1을 저장하는 것을 볼 수 있다.

 

우리는 eax가 1로 저장되어서 함수를 나가야 Correct 문구를 띄우는 흐름으로 이어질 수 있다.

따라서 문구열이 일치해야 하므로, Compar3 문구열이 Flag가 된다.

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

[Dreamhack] Beginner: simple-operation  (0) 2024.04.02
[Dreamhack] Reversing Basic Challenge #1  (0) 2024.03.27
[CodeEngn] Basic RCE - L16  (1) 2023.11.21
[CodeEngn] Basic RCE - L15  (1) 2023.11.21
[CodeEngn] Basic RCE - L10  (0) 2023.11.21
Comments