1 분 소요

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

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/15/

Get Input
Print Wrong 또는 Correct

문제 형식: MSVC++ 2019 Windows 64 bit executable
요약: MSVC++ AMD64 어플리케이션 chall1.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을 통해 입려받은 값을 확인 하는 방식. 값을 test(AND 연산)를 통해 동일하지 않다면 sub_1400013B6으로 jmp하여 Wrong 메시지 출력.


이를 확인 하기 위해 확인 call subroutin 부분에 Breakpoint를 걸고 Step into 시 사용자 Input 값의 모든 자리 수에 대하여 cmp를 통해 특정 문자와 비교 하는 것으로 확인 함.

또한 지난 rev-basic-0과 마찬가지로 IDA를 통해 디컴파일 된 Pseudo Code를 통해 확인 가능.

sub_140001000 에서 a1의 각 문자열을 if 문으로 각각 체크 하는 것을 확인.