본문 바로가기

드림핵

[드림핵 워게임] rev-basic-0

<문제>

 

<풀이>

먼저 동적분석을 진행해본다.

Windows PowerShell을 연다

 

다운로드한 chall0.exe 파일을 PowerShell창으로 드래그앤드롭한다.

 

Enter를 쳐서 명령어를 입력하면

Input : 이라는 문자가 뜨면서 입력 대기 상태가 된다.

 

임의의 값 1234를 입력해본다.

 

Wrong이 뜨고 프로그램이 종료된다.

 

 

이제 IDA를 이용해 정적 분석을 해본다.

IDA가 실행파일을 열기 전에 파일에 대한 정보를 보여준다.

대략 확인한 후 OK를 클릭한다.

 

심볼(.pdb) 파일을 찾아서 로드하겠느냐고 묻는다.

심볼 파일이 없으므로 No를 클릭한다.

 

 

우선 실행할 때 출력되었던 문자열을 찾아가본다.

View > Open subviews > Strings 를 클릭하거나 Shift+F12 를 누른다.

 

출력된 문자열들 중에서 Input :Correct, 그리고 Wrong등의 문자열을 찾을 수 있다.

올바른 입력값을 입력하는 경우에 출력되는 것으로 보이는 Correct 문자열을 더블클릭한다.

 

어셈블리 코드 창에서 해당 문자열이 있는 명령어 줄을 찾을 수 있다.

 

Buffer를 클릭해서 선택한 뒤에 상호참조 단축키 x를 누른다.

 

xrefs 창이 뜬다.

선택한 Buffer 변수를 참조하는 함수가 뜬다.

해당 항목을 더블클릭하여 함수를 찾는다.

 

main함수를 찾았다. F5를 눌러 디컴파일을 진행한다.

 

디컴파일된 main 함수가 뜬다.

if문에서 sub_140001000() 함수의 결과값에 따라 Correct 또는 Wrong을 출력한다.

sub_140001000() 함수를 더블클릭한다.

 

전달받은 문자열 인자 a1과 "Compar3_the_str1ng"문자열을 비교하여 반환하는 함수를 찾을 수 있다.

 

프로그램을 실행해서 "Compar3_the_str1ng"을 입력하면 Correct가 뜬다.

 

 

 

'드림핵' 카테고리의 다른 글

[드림핵 워게임] patch  (2) 2023.11.24
[드림핵 워게임] rev-basic-1  (0) 2023.11.21
[드림핵 Reverse Engineering] Stage 5  (0) 2023.11.14
[드림핵 Reverse Engineering] Stage 4  (0) 2023.11.07
[드림핵 Reverse Engineering] Stage 3  (0) 2023.09.20