Simples Crackme 16
- Question
· Name Certlab에 맞는 Password를 찾아 MD5 Hash 값으로 변환하는 문제이다.
· Name에 맞는 Password를 입력하면 'Good Job!'이라는 Message를 출력하고 맞지 않는 Password를 입력하면 'Wrong password!'라는 Message를 출력한다.
- Solve
· 'Search for → All referenced text strings'를 이용해 성공 Message과 실패 Message을 찾아볼 수 있다.
· 성공 Message를 위쪽을 살펴보면 CMP, 명령어와 JNZ 명령어로 실패 Routine으로 이동시켜주는 역할을 하는 곳을 볼 수 있다.
· Password를 생성하는 구간 찾기
◦ Password를 비교하는 구간을 살펴보면 EBP-40을 EAX에 저장하고 EAX와 EBP-3C를 비교하는 것을 볼 수 있다.
◦ 즉 EBP-40 또는 EBP-3C 둘 중 하나가 Program 내에서 생성된 Password라는 것을 알 수 있다.
◦ 그리고 그전에 'PTR DS:[EAX]'에 EDX를 더하는(ADD) 것을 볼 수 있는데 이후에 EBP-40으로 덮어써지기 때문에 EBP-3C가 Password라는 것으로 판단할 수 있다.
◦ 그리고 조금 더 윗부분을 살펴보면 Name 입력함수와 Password 입력함수를 찾을 수 있다.
◦ 따라서 Password를 생성하는 부분은 Name 입력함수와 비교부분 사이에 있다는 것을 알 수 있다.
◦ Password 생성은 3번을 거쳐 진행되며 Name을 입력받는 함수 내에서 입력받은 문자열로 값을 하나 생성하고 이후에 1차 연산, 2차 연산이 진행된다.
· Certlab에 맞는 Password찾기
◦ 위와 같은 방법으로 Name을 입력받고 Password를 입력받은 뒤 CMP 명령어를 실행하기 바로 전에 Stack Window를 확인해보면 EBP-3C영역에 'BD14B8D7'이란 값이 저장된 것을 볼 수 있다.
◦ 즉 0xBD14B8D7를 10진수로 바꾼 값(3172251863)이 Password가 된다.
- Answer
· 정답 : dea22fee8d5293acc6fe170a667db7bb
'Reversing > Simples Creckme' 카테고리의 다른 글
Simples Crackme 18 (0) | 2015.08.16 |
---|---|
Simples Crackme 17 (0) | 2015.08.16 |
Simples Crackme 15 (0) | 2015.08.16 |
Simples Crackme 14 (0) | 2015.08.16 |
Simples Crackme 13 (0) | 2015.08.16 |