본문 바로가기
CTF/Dreamhack

[Dreamhack] Reversing Basic Challenge #2

by 8희 2024. 3. 30.

https://dreamhack.io/wargame/challenges/16

 

rev-basic-2

Reversing Basic Challenge #2 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출

dreamhack.io

 

올바른 입력 값을 검증하는 프로그램을 리버싱 해야 한다.


 

문제 파일을 실행해보면 입력 창이 뜨고, 아무 값이나 입력이 가능하지만

올바른 입력 값이 아닌 것을 입력하고 Enter를 클릭하면 창이 종료된다.

 

 

x64dbg에서 [마우스 우클릭 > 다음을 찾기 > 모든 모듈 > 문자열 참조]를 통해 

이 exe 파일에서 사용하는 모든 문자열을 확인해봤다.

 

Input, Correct, Wrong이 포함된 문자열을 찾을 수 있다. 

우선 Input 문자열이 있는 주소에와 Correct 문자열이 있는 주소에 BP를 설정하고

Correct 문자열이 있는 주소로 이동했다.

 

 

Correct 문자열이 있는 주소보다 조금 위를 살펴 보니

test eax,eax로 input 값과 저장되어 있는 문자를 비교한 후에 Correct나 wrong을 출력한다.

 

call <chall2.sub_2FF676E21000>에서 반환된

eax 값을 test하여 ZF가 0이면 Correct를 출력하는 것이다. 

즉, 위에 있는 함수가 입력 값을 검증하는 함수라는 것을 알 수 있다.

 

 

해당 함수로 이동해보면 input 값인 rcx 값과 7FF6AA183000의 값을 12번 비교한다. 

 

 

7FF6AA183000 주소로 덤프해서 따라가보면 4바이트 안에 문자가 하나씩 존재한다.

따라서 우리가 찾는 input 값은 Comp4re_the_arr4y임을 알 수 있다. 

 

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

[Dreamhack] Reversing Basic Challenge #4  (0) 2024.04.10
[Dreamhack] Reversing Basic Challenge #3  (0) 2024.04.06
[Dreamhack] Reversing Basic Challenge #1  (0) 2024.03.23
[Dreamhack] CSRF Advanced  (0) 2023.11.22
[Dreamhack] csrf-1  (1) 2023.11.22