Abex_CrackMe 2

해킹대회 문제 풀이 연습장소

Moderator: amesianx

Post Reply
KSH
Posts: 24
Joined: Thu Jul 21, 2016 5:39 pm

Abex_CrackMe 2

Post by KSH » Sun Aug 21, 2016 9:11 pm

Abex_CrackMe 2 공략

1.프로그램 실행
<abexcrackme2.exe실행-1>
1.png
1.png (3.1 KiB) Viewed 489 times
<abexcrackme2.exe실행-2>
2.png
2.png (15.11 KiB) Viewed 489 times
4글자를 넣으라고 합니다.

<abexcrackme2.exe실행-3>
3.png
3.png (13.08 KiB) Viewed 489 times
네글자를 넣은 이후부터는 serial값이 잘못됬다고 합니다.

2.디버깅
4.png
4.png (45.16 KiB) Viewed 489 times
이것은 x32dbg로 프로그램을 실행시킨 것인데 코드가 너무많아 엔트리포인트를 찾을 수 없습니다.

그래서 문자열을 살펴보았습니다.
5.png
5.png (44.25 KiB) Viewed 489 times
원하는 문자열들이 보이네요 Follow in Disassembler로 please~~의 위치로 이동했습니다.
6.4글자.png
6.4글자.png (32.57 KiB) Viewed 489 times
Please enter at ~~~ 문자열에서 조금 올라가보면 test ax, ax와 je abexcrackme.4030F9가 있습니다.
이것이 글자수를 따지는 분기점입니다.
7.3글자로.png
7.3글자로.png (2.47 KiB) Viewed 489 times
문자 3개로 실행하게되면 EAX는 FFFFFFFF가 됩니다.
8.register_3글자.png
8.register_3글자.png (4.66 KiB) Viewed 489 times
그래서 ZF가 셋 되지 않고 0인 상태가 됩니다.
그렇게 되면 je를 수행하지 않으며 진행되면서 Please ~~~가 출력되는겁니다.

반면에 문자를 4개를 넣게되면
9.4글자로.png
9.4글자로.png (2.65 KiB) Viewed 489 times
10.register_4글자.png
10.register_4글자.png (4.61 KiB) Viewed 489 times
EAX는 0이 됩니다. 그래서 test ax, ax에서 ZF가 셋이 되면서 je가 수행되어, Please~~~를 건너뛰게 됩니다.

이제 시리얼값을 찾아보겠습니다. 우선 Yep~~~문자열이 있는곳으로 이동할겁니다.
11.Yep.png
11.Yep.png (41.88 KiB) Viewed 489 times
Yep~~문자열에서 조금 위로 올라가보면 0040332F지점에 test ax,ax와 je abexcrackme.403408이 있습니다.
이것이 시리얼 값을 따지는 분기점입니다.
분기점에서 조금 더 올라가보면 004032E1지점에 push edi와 push eax가 있습니다. 이것이 시리얼이 맞는지 확인하는 부분같습니다.
Name에는 1111을 Serial에는 2222를 입력한 뒤, 실행시켰습니다.
13.시리얼얻기-1.png
13.시리얼얻기-1.png (2.59 KiB) Viewed 489 times
14.시리얼 얻기-2.png
14.시리얼 얻기-2.png (44.96 KiB) Viewed 489 times
프로그램을 실행시키면 ebp-88에 입력한 시리얼 2222와 ebp-94에 95959595를 볼 수 있습니다.

스탭오버를 해보면
15.시리얼 얻기-3.png
15.시리얼 얻기-3.png (45.47 KiB) Viewed 489 times
00403307지점에서 eax의 값을 95959595가 있는 ebp-94에 넣습니다.
16.시리얼 얻기-4.png
16.시리얼 얻기-4.png (5.12 KiB) Viewed 489 times
EAX에는 입력한 2222가 있습니다 즉, 2222를 95959595의 주소에 대입하는겁니다.
그리고 계속 실행하다 00403332의 je 403408을 만나서
17.잘못된시리얼.png
17.잘못된시리얼.png (30.71 KiB) Viewed 489 times
Nope, this serial is wrong!을 출력하는 메시지 박스를 보게 될겁니다.

Name에 1111을 Serial에 95959595를 입력한 뒤, 실행시켜 보았습니다.
18.암호획득.png
18.암호획득.png (15.86 KiB) Viewed 489 times
신기하게도 암호가 95959595로 좀 특이합니다.
그래서 Name에 2222를 입력한 후 실행해 보았습니다.
19.암호테스트.png
19.암호테스트.png (8.51 KiB) Viewed 489 times
암호가 96969696으로 나옵니다.
아스키코드로 1은 0x31 2는 0x32입니다.
즉, 암호는 Name에 입력한 아스키코드 값에서 1바이트씩 0x64를 더한 값이 나온다는 것을 알 수 있습니다.

3.클리어
20.클리어.png
20.클리어.png (15.21 KiB) Viewed 489 times
깼습니다.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest