1 분 소요

[DreamHack.io] rev-basic-0 풀이

Environments

Name Config
CPU Apple M1
Architecture ARM64
OS Microsoft Windows 11 on ARM
Tools - Hex-Rays IDA 7.5
- A.S.L ExeInfo PE 0.0.6.7

문제

URL: https://dreamhack.io/wargame/challenges/14/

Get Input
Print Wrong 또는 Correct

요약: MSVC++ 2019 AMD64 어플리케이션 chall0.exe 로부터 correct 를 출력 할 수 있는 문자열을 찾기

File Format

Upx not packed MSVC++ Windows 64 bit executable

checksec

Name Status
Dynamic Base Present
ASLR Present
High Entropy VA Present
Force Integrity NotPresent
Isolation Present
NX Present
SEH Present
CFG NotPresent
RFG NotPresent
SafeSEH NotApplicable
GS Present
Authenticode NotPresent
.NET NotPresent

풀이

우선 IDA를 통해 Static Analysis(정적 분석)을 시도. 잘 알려진 형식이므로 자동으로 main 진입점을 찾아 줌.
sub_140001000 call을 통해 Input 값을 확인 하는 방식. 값을 test(AND 연산)를 통해 동일하지 않다면 sub_140001166으로 jmp 하여 wrong 메시지 출력을 하는 것을 확인.


이를 확인 하기 위해 call subroutine 부분에 Breakpoint를 걸고 Step into 시 strcmp 대상이 확인이 가능.

또한 단순 strcmp(문자열 체크) 이므로 Pesudo Code에서 확인 가능.

sub_140001000 에서 문자열 비교가 이루어지며, 해당 부분에서 strcmp src 대상 확인 가능