
이번에도 03번 문제처럼 name에 CodeEngn을 입력한 후 적절한 Serial 값 입력을 찾아내는 문제인듯 하다
문제를 풀어보기 전 detect it easy를 통해 패킹여부를 확인해보자

따로 패킹은 되어있지 않다
올리디버거를 통해 분석해보자

여태까지 봐온 모습과는 조금 다르다
일단 F8을 통해 어느 문구로 이동하는지 살펴보는 도중

오류가 발생하는 것을 확인할 수 있다
설명을 읽어보니 breakpoint는 코드의 명령어 경계에 설정되어야 제대로 작동하는데,
만약 코드가 아닌 데이터나 명령어 중간에 브레이크포인트를 설정하려고 할 때
예기치 않은 오류가 발생한다고 알려주는듯 하다
그래서 x32dbg로 이동후 한 번 실행을 해보았다

F9으로 엔트리포인트를 찾아주고, F8을 누르다보면

이 부분에서 jne 명령어에 의해 몇번씩 반복하는 걸 보게 된다
우리는 현재 serial number를 찾는게 목표이므로, 004011C7 부분에 F4를 눌러 탈출하도록 하자
그 후에 F8을 눌러보면 다른 부분이 등장하는데

우리가 원하는 문자열이 등장하는 것을 볼 수 있다
Valid Serial 부분을 찾은 후에 strcmp 부분에 breakpoint를 걸어 어떠한 값과 비교하는지 확인해보자

이름이 CodeEngn일 때, Serial number는 LOD~ 라고 되있는 부분이다
push를 통해 스택에 넣고, strcmp 함수로 비교한 뒤 둘의 값이 같으면 0을 반환한다
(eax가 함수의 반환값을 저장)
따라서 문제의 Serial Number는
LOD-59919-A0024900
'CodeEngn' 카테고리의 다른 글
| [CodeEngn]Advance RCE 06 Write Up (5) | 2024.10.31 |
|---|---|
| [CodeEngn]Advance RCE 05 Write Up (8) | 2024.10.30 |
| [CodeEngn]Advance RCE 03 Write Up (1) | 2024.09.11 |
| [CodeEngn]Advance RCE 02 Write Up (2) | 2024.09.09 |
| [CodeEngn]Advance RCE 01 Write Up (2) | 2024.09.07 |