[CodeEngn] Basic RCE L05
L05
문제
이 프로그램의 등록키는 무엇인가
파일 실행
Register now
Register now 2
- 이름이 들어가는지 안들어가는지 체크하는 부분과
- 입력된 시리얼이 참인지 비교하는 구문 있을거라 추축
올리디버거
- PUSHAD를 통해 UPX 패킹되어있을거라 추측
EXEINFO PE
- UPX 패킹 확인
UPX 패커로 언패킹
올리디버거 : 언패킹파일
코드에서 참조되는 문자열 보기위해 Search for → All referenced text strings
- 성공 문구 발견
- 성공 문구 위에 이름과 등록키로 추정
성공 문구 이동(Double Click)
- BreakPoint 잡고 임의 입력 후 Register now!
한 단계 진행 : F8
- EAX에 입력한 eonion
F8
- EDX에 Register User
00440F34 내부 : F7
- EAX와 EDX 비교
- 실패 메시지 출력 -> 즉 ID는 Registered User
Register User 입력
- 다시 처음부터 똑같이 진행해서 ID 칸에 Register User 를 입력해주자.
- CMP하여 참값을 반환
등록키 비교하는 두번째 BreakPoint로 이동
- 00440F51 : 00440F34와 같은 함수를 쓰는 내부 구조라는 걸 파악
- 즉, 등록되어있는 값과 입력한 값을 비교하여 참 거짓 값을 반환하는 함수
- EAX에는 입력한 값, EDX에는 등록되어있는 등록키가 보이는 것 확인
결론
- 유저 네임과 등록키 둘 다 올바르게 입력해야 성공 메시지 출력