전체 글 (62) 썸네일형 리스트형 [ProjectH4C] 해커스쿨 LOB(BOF 원정대) Level10 vampire에 로그인하면 skeleton 실행 파일과 skeleton.c 소스 파일이 보인다. 소스 코드부터 확인해주었다. /* The Lord of the BOF : The Fellowship of the BOF - skeleton - argv hunter */ #include #include extern char **environ; main(int argc, char *argv[]) { char buffer[40]; int i, saved_argc; if(argc < 2){ printf("argv error\n"); exit(0); } // egghunter for(i=0; environ[i]; i++) memset(environ[i], 0, strlen(environ[i])); if(argv[1].. [ProjectH4C] 해커스쿨 LOB(BOF 원정대) Level9 troll에 로그인하면 vampire 실행파일과 vampire.c 소스 파일이 보인다. 소스 코드부터 확인 해보았다. /* The Lord of the BOF : The Fellowship of the BOF - vampire - check 0xbfff */ #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 is still your friend.\n"); exit(0); } // here is changed! if(argv[1][46] == '\xff') { printf("bu.. [ProjectH4C] 해커스쿨 LOB(BOF 원정대) Level8 orge에 로그인하면 troll 실행 파일과 troll.c 소스 파일이 보인다. troll.c의 내용은 다음과 같다. /* The Lord of the BOF : The Fellowship of the BOF - troll - check argc + argv hunter */ #include #include extern char **environ; main(int argc, char *argv[]) { char buffer[40]; int i; // here is changed if(argc != 2){ printf("argc must be two!\n"); exit(0); } // egghunter for(i=0; environ[i]; i++) memset(environ[i], 0, strlen(env.. [ProjectH4C] 해커스쿨 LOB(BOF 원정대) Level7 darkelf에 로그인하면 orge 와 orge.c가 존재한다. 소스코드는 다음과 같다. /* The Lord of the BOF : The Fellowship of the BOF - orge - check argv[0] */ #include #include extern char **environ; main(int argc, char *argv[]) { char buffer[40]; int i; if(argc < 2){ printf("argv error\n"); exit(0); } // here is changed! if(strlen(argv[0]) != 77){ printf("argv[0] error\n"); exit(0); } // egghunter for(i=0; environ[i]; i++) me.. [ProjectH4C] 해커스쿨 LOB(BOF 원정대) Level6 wolfman에 로그인하면 역시나 darkelf 실행파일과 darkelf.c 소스 코드가 존재한다. 소스 코드는 다음과 같다. /* The Lord of the BOF : The Fellowship of the BOF - darkelf - egghunter + buffer hunter + check length of argv[1] */ #include #include extern char **environ; main(int argc, char *argv[]) { char buffer[40]; int i; if(argc < 2){ printf("argv error\n"); exit(0); } // egghunter for(i=0; environ[i]; i++) memset(environ[i], 0, str.. [ProjectH4C] 해커스쿨 LOB(BOF 원정대) Level5 Orc로 로그인하면 wolfman과 wolfman.c가 보인다. 소스 코드부터 보기로 한다. #include #include extern char **environ; main(int argc, char *argv[]) { char buffer[40]; int i; if(argc < 2){ printf("argv error\n"); exit(0); } // egghunter for(i=0; environ[i]; i++) memset(environ[i], 0, strlen(environ[i])); if(argv[1][47] != '\xbf') { printf("stack is still your friend.\n"); exit(0); } strcpy(buffer, argv[1]); printf("%s\n",.. [ProjectH4C] 해커스쿨 LOB(BOF 원정대) Level4 goblin에 로그인하면 역시나 소스 코드와 실행 파일이 하나 보인다. #include #include extern char **environ; main(int argc, char *argv[]) { char buffer[40]; int i; if(argc < 2){ printf("argv error\n"); exit(0); } // egghunter for(i=0; environ[i]; i++) memset(environ[i], 0, strlen(environ[i])); if(argv[1][47] != '\xbf') { printf("stack is still your friend.\n"); exit(0); } strcpy(buffer, argv[1]); printf("%s\n", buffer); } .. [ProjectH4C] Pwntools 사용법 Pwntools란 파이썬에서 지원하는 라이브러리 중 하나로 익스플로잇을 쉽게 할 수 있도록 지원해주는 기능들이 포함되어 있다. 파이썬 2.x버전에서만 사용 가능하다고 알고 있었는데, python 3.x 에서 사용해보니 문제 없이 사용이 가능하길래 3.x 버전을 기준으로 작성하였다. 설치 pwntools는 파이썬의 라이브러리이기 때문에 파이썬의 라이브러리를 관리해주는 pip를 먼저 설치한 다음 pip를 이용해 pwntools를 설치하면 된다. 참고로 파이썬 3의 경우, pip가 아닌 pip3를 사용해야 한다. $ pip3 install pwntools 이후 pip3 list를 통해 설치된 패키지 목록을 출력하여 pwntools가 정상적으로 설치되었는지 확인하면 된다. 사용법 기본적인 메소드는 다음과 같다... 이전 1 2 3 4 5 6 ··· 8 다음