문제 종류 - Reversing
사용한 툴 - Ollydbg, HxD
Flag, Hint, 정답 형식
flag = ?
hint: X
정답 형식: flag의 해쉬 값
풀이
파일이 하나 주어진다. HxD로 분석해보자.
MZ로 시작하므로 .exe로 확장자를 바꾸고 프로그램을 실행해보자.
File Not Found! 라는 오류와 함께 프로그램이 정상적으로 실행이 되지 않는다.
Ollydbg를 이용해 이 프로그램을 분석해보자.
우선 해당 MessageBox를 출력하는 함수를 찾아보자
해당 함수에 해당하는 주소를 클릭하여 이동해보자.
역시 예상대로 이 부분에서 File Not Found! 라는 문자열을 출력한다.
좀 더 위로 구문을 올려서 왜 이러한 오류가 뜨는지 분석해보자.
00401000 주소에 BP를 걸고 00401050 주소까지 실행해보자.
그럼 ESP에 다음과 같은 문구가 저장된다.
이 makeflag.source 파일을 이 프로그램과 같은 경로에 만들어주자.
나는 간단하게 메모장을 이용해 만들었다.
그 후, 다시 실행해보자.
이번에는 File Size Incorrect! 라는 문구가 뜨면서 정상적으로 실행이 되지 않는다.
또 다시 Ollydbg를 이용해 분석해보자.
이 부분에서 makeflag.source 파일의 Size를 읽어
EBP-4 부분인 0019FEDC에 값을 저장한다.
그 후, 0F 와 EBP-4를 비교해 JE문을 실행시킨다.
makeflag.source 파일의 Size를 15로 맞추고 다시 실행해보자.
나는 abcdeabcdeabcde를 makeflag.source에 입력해줬다.
그 후 프로그램을 실행해봤다.
^_^ 이번에는 File Content Incorrect! 라는 문구와 함께 프로그램이 정상적으로 실행이 되지 않는다.
다시 Ollydbg를 이용해 분석해봤다.
이 구문은 EBP-A ~ EBP-18 부분에 makeflag.source 파일의 내용을 저장한다.
그 후, 0x(31, 32, 32, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35, 35)와 비교한다.
모두 맞으면 JE문을 실행해 Flag를 출력한다.
0x31 -> 1
0x32 -> 2
0x33 -> 3
0x34 -> 4
0x35 -> 5
이므로 makeflag.source 파일 내용을 12233344455555로 바꾸고 다시 실행해봤다.
flag: md5(flag)
Reversing ALL Clear!
'Wargame > KH Wargame' 카테고리의 다른 글
[KH Wargame] Web07 풀이 (0) | 2020.08.07 |
---|---|
[KH Wargame] Network04 풀이 (0) | 2020.08.07 |
[KH Wargame] Reversing01 풀이 (0) | 2020.04.25 |
[KH Wargame] Misc04 풀이 (0) | 2020.04.25 |
[KH Wargame] Misc03 풀이 (0) | 2020.04.24 |