Iriton's log
[Dreamhack] Reversing Basic Challenge #0 본문
문제 파일을 다운로드 하고 기존 사용하던 올리디버거로 파일을 열었는데,
실행이 안 됐다.
새로운 디버거 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