반응형


저번 Gate문제와는 달리 버퍼에 ShellCode를 저장할 수 없습니다.

그러므로 새로운 공간에 ShellCode를 넣을 필요가 있습니다.

이때 우리는 환경변수를 사용할 수 있습니다.


export shellcode=`python -c 'print SHELLCODE'`


와 같은 명령어를 통해 환경변수에 ShellCode를 넣을 수 있습니다.

그러면 이제 환경변수의 주소 위치를 알아야 합니다.


환경변수의 주소는 

환경변수 내용의 크기와 프로그램의 시작명령줄의 길이에 비례합니다.


프로그래밍을 통해 위치를 알았습니다.

#include<stdlib.h>

#include<stdio.h>

int main(int argc,char *argv[])

{

        int k,a,b;

        a=strlen(argv[0]);

        b=strlen(argv[1]);

        k=getenv("KSHMK");

        k+=2*(a-b);

        printf("0x%x\n",k);

        return 0;

}



이제 공격만 하면 됩니다.

오버플로우하는 방법은 이전 Gate와 같으므로 생략합니다.




'Pwnable > LOB' 카테고리의 다른 글

LOB 6. Wolfman  (0) 2015.09.25
LOB 5. Orc  (0) 2015.09.23
LOB 4. Goblin  (0) 2015.09.20
LOB 3. Cobolt  (0) 2015.09.17
LOB 1. Gate  (0) 2015.09.08
반응형

ReadMe

ReversingKr KeygenMe

Find the Name when the Serial is 5B134977135E7D13



이름을 입력받아 시리얼을 만드는 모양인 것 같습니다.

IDA로 열어보았습니다.



이걸 통해 시리얼을 사용해 이름을 만드는 소스를 만들었습니다.

#include<stdio.h>

#include<string.h>

int main(void)

{

char Serial[100]={0};

char Name[100]={0};

char Seed[3]={16,32,48};

int i,k;

scanf("%s",Serial);

for(i=0,k=0;i<strlen(Serial)/2;i++,k++)

{

k%=3;

sscanf(Serial + (i * 2), "%2x", &Name[i]);

Name[i] ^= Seed[k];

}

printf("%s\n",Name);

return 0;

}


KEY: K3yg3nm3

'Reversing > Reversing.KR' 카테고리의 다른 글

ReversingKR ImagePrc  (0) 2015.10.22
ReversingKR Replace  (0) 2015.09.22
ReversingKR Easy ELF  (0) 2015.09.20
ReversingKR Easy UnpackMe  (0) 2015.09.12
ReversingKR Easy CrackMe  (0) 2015.09.08

+ Recent posts