Sh4n3e
정수형 Ver. int fastread(){ register char c = 0; while(c33){ num = num*10 + c-'0'; c = getchar(); } return num;}
이번 문제는 이전 문제와 비슷하면서도 약간 응용이 필요한 문제이다. 보면 FEBP라고 써있는데, 딱봐도 EBP를 이용해라 라고 말해주고있다. [assassin@localhost assassin]$ cat zombie_assassin.c/* The Lord of the BOF : The Fellowship of the BOF - zombie_assassin - FEBP*/ #include #include main(int argc, char *argv[]){char buffer[40]; if(argc < 2){printf("argv error\n");exit(0);} if(argv[1][47] == '\xbf'){printf("stack retbayed you!\n");exit(0);} if(argv[1][..
해당 문제는 RET에 \xbf와 \x40을 쓰지못하는 문제다.이것은 기존 Stack으로 Return해서 Shellcode를 실행할 수 없고, RTL을 사용할 수 없다.그럼 우리는 딱 argv[1][47]이 \xbf, \x40인 것만 회피하면 된다. 따라서 나는 여기서 main함수의 ret를 다시한번 호출하는 아이디어를 이용했다. [giant@localhost giant]$ cat assassin.c/* The Lord of the BOF : The Fellowship of the BOF - assassin - no stack, no RTL*/ #include #include main(int argc, char *argv[]){char buffer[40]; if(argc < 2){printf("argv e..