Phantom

Crackme – 14 본문

Pwnable/Crackme 처음 풀 때

Crackme – 14

Ph4nt0m_ 2016. 3. 1. 14:12
반응형

음…키값을 넣고 네임을 넣으란다 2자리라고 하고..

델파이로 짜였더라. 로딩 오래걸리더라…

우선 프로그램을 실행해본다.

키값을 넣고 두자리 네임이랬으니 AA를 넣고 실행해본다.

음…저 다음엔 뭘 집어넣어도 실행이 안된다.

저 Please.. 문자열 쪽으로 검색해 들어가봐야겠다.

 

도저히 아이다로는 알아보기 힘들어 이뮤니티를 써야겠다.

이 프로그램이 3개문자열로 비교를 해서 2자리로 수정한 후의 키 값을 찾았다.

그러나 문제는 154C-6505-D2ADD0F3-A223-2870의 네임을 찾는 것이다.

이 부분에서 앞자리 4자리가 나온다…

그럼 이 연산을 통해 154C가 나오는 알파벳이나 숫자를 찾음 된다

브루트포싱을 하면 되는데…코딩능력이 딸려 소스를 빌려왔다.

 

 

 

Bruteforce.c

 

 

#include <stdio.h>

#include <string.h>

 

int main(){

    FILE *fp=fopen("D:\output.txt","wt");

    const char *component="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    char name[3];

    int i=0,j=0,len=0;

    unsigned ecx=0, edx=0,esi=0;

 

    memset(name,0,3);

 

    len=strlen(component);

    

    for(i=0;i<len;i++){

        name[0]=component[i];

 

        for(j=0;j<len;j++){

            name[1]=component[j];

            edx=0;

            esi=0;

            for(ecx=0;ecx<2;ecx++){

                esi = name[ecx];

                esi +=edx;

                esi = esi*0x772;

                edx = esi;

                edx *=esi;

                esi +=edx;

                esi *=0x474;

                esi +=esi;

                edx = esi;

            }

            fprintf(fp, "%c%c - %x\n", component[i],component[j],edx/0x10000);

            if(edx/0x10000==0x154c){

                fprintf(fp,"The Anser is %c%c.\n",component[i],component[j]);

                fclose(fp);

                return 0;

            }

        }

    }

    fclose(fp);

    return 0;

}

답은 이렇게 나온다.

CL - 8aa3

CM - 5c16

CN - 8ef

CO - 912d

CP - f4cf

CQ - 33d7

CR - 4e44

CS - 4415

CT - 154c

The Anser is CT.

앞자리 알고리즘에서 어느 정도 연산은 알겠는데 그 위의 모든 구성은 전혀 이해 하지 못하겠다..

반응형

'Pwnable > Crackme 처음 풀 때' 카테고리의 다른 글

Crackme – 16  (0) 2016.03.01
Crackme – 15  (0) 2016.03.01
Crackme – 13  (0) 2016.03.01
Crackme – 12  (0) 2016.03.01
Crackme – 11  (0) 2016.03.01
Comments