Q14. Name이 CodeEngn 일 때 Serial을 구하시오 (이 문제는 정답이 여러 개 나올 수 있는 문제이며 5개의 숫자로 되어있는 정답을 찾아야 함, bruteforce 필요) Ex) 11111

입력받는 칸이 2개가 있는 프로그램이다.
위 칸은 Name, 아래칸은 Serial 값을 받을 것이라고 예측되는 프로그램이다.
Name은 문제에서 CodeEngn이 주어졌고, Serial 값은 임의의 값 12345를 입력했을 때 다음과 같은 창이 출력되었다.

OllyDbg로 실행해보려 했으나 압축된 코드라고 알려주었다.

Exeinfo PE 툴 처럼 PE 구조에 대해 분석해 주는 PEiD프로그램을 통해 14.exe을 분석해 보니 UPX 패킹된 프로그램이었다.

upx 언패킹 툴로 14.exe를 언패킹 진행했다.

성공 문구를 확인하고 해당 주소로 가보았다.

40133A주소에서 CMP 명령어로 EAX와 ESI를 비교하는 것을 확인해 볼 수 있었다.
ESI값과 EAX값을 확인해 보기 위해 40133A주소에 BP를 걸고 F9로 디버깅했다.
이때 입력한 값은 Name : CodeEngn, Serial : 12345를 입력하고 테스트해보았다.


ESI에는 129A1이라는 값이 저장되어 있었고, EAX에는 3039 값이 저장되어 있었다.


ESI와 EAX에 저장된 값을 10진수로 변환해 보았다.
EAX에는 테스트에 사용한 12345 값이 16진수로 저장된다는 것을 알아내었다.
그렇다면 ESI의 값(129a1)을 10진수로 변환한 값인 76193을 넣는다면 Serial값을 얻을 수 있을 것으로 예측했다.

Serial 값은 76193 임을 검증했다.
'Reversing > CodeEngn' 카테고리의 다른 글
| [CodeEngn] RCE basic L16 풀이 (0) | 2025.09.03 |
|---|---|
| [CodeEngn] RCE basic L15 풀이 (0) | 2025.09.03 |
| [CodeEngn] RCE basic L13 풀이 (0) | 2025.09.01 |
| [CodeEngn] RCE basic L12 풀이 (1) | 2025.09.01 |
| [CodeEngn] RCE basic L11 풀이 (2) | 2025.09.01 |