본문 바로가기

Pwnable/LOB

(12)
[ProjectH4C] 해커스쿨 LOB(BOF 원정대) Level12 golem에 로그인 하면 darkknight 실행파일과 darkknight.c 소스 파일이 존재한다. 소스부터 확인하였다. /* The Lord of the BOF : The Fellowship of the BOF - darkknight - FPO */ #include #include void problem_child(char *src) { char buffer[40]; strncpy(buffer, src, 41); printf("%s\n", buffer); } main(int argc, char *argv[]) { if(argc
[ProjectH4C] 해커스쿨 LOB(BOF 원정대) Level11 steleton에 로그인하면 golem 실행 파일과 golem.c 소스 파일이 보인다. 소스 파일의 내용은 다음과 같다. /* The Lord of the BOF : The Fellowship of the BOF - golem - stack destroyer */ #include #include extern char **environ; main(int argc, char *argv[]) { char buffer[40]; int i; if(argc < 2){ printf("argv error\n"); exit(0); } if(argv[1][47] != '\xbf') { printf("stack is still your friend.\n"); exit(0); } strcpy(buffer, argv[1]); ..
[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",..