-
Dreamhack - Inject ME!!!wargame/Dreamhack 2024. 8. 5. 00:19
[LEVEL 1 - Inject ME!!! - reversing]
문제 설명을 보면, 문제 파일에서 주어진 prob_rev.dll 파일과 함께 있는 TXT 파일에는 조건을 맞춰서 DLL을 로드시키면 플래그를 얻을 수 있다고만 쓰여져 있었다고 한다.
문제를 풀고 나서 보니 이 문장 자체가 문제 힌트다.
ida로 해당 dll을 열어서 디컴파일하면 위와 같이 DllMain함수를 볼 수 있다.
함수로 들어오면 위와 같이 디컴파일되는데, 모르는 함수들은 검색을 하자.
구글링하면서 대략적으로 이 함수가 전체적으로 무엇을 하는지 주석을 달아 정리해보았다. 밑쪽에 sub_180001060 함수는 자신의 반환값과 v5~v8을 xor연산하고 결과값 중 Text를 메시지박스로 출력하는데, 이것이 곧 플래그값일 것으로 추정된다. 그래서 이 문제를 풀기 위해서는 이름이 "dreamhack.exe"인 파일에서 prob_rev.dll을 로드하기만 하면 된다.
dll을 로드하기 위해 위와 같이 dreamhack.c 소스코드를 짰다. 근데 실행파일은 생기는데 제대로 실행이 안되어서 뭔가 하고 봤더니 내 컴퓨터에 깔려있는 MinGW는 32비트로만 컴파일해줘서 64비트 버전을 깔아야했다.(dll이 64비트) 그래서 msys64 설치하고 그걸로 mingw64 버전 툴체인 편하게 설치했다. 그렇게 하고 다시 msys64에서 gcc dreamhack.c -o dreamhack.exe를 하니까 바로 메시지박스가 뜨면서 정상 실행되었다. 메시지박스에 플래그값이 나와있다.
플래그를 획득했다!
'wargame > Dreamhack' 카테고리의 다른 글
Dreamhack - [CodeEngn] Malware L07 (0) 2024.08.18 Dreamhack - [CodeEngn] Malware L06 (0) 2024.08.18 Dreamhack - Secure Mail (0) 2024.08.04 Dreamhack - rev-basic-8 (1) 2024.07.23 Dreamhack - rev-basic-6 (1) 2024.07.23