⊙ 문제의 소스를 보자) |
[wolfman@localhost wolfman]$ cat darkelf.c /* The Lord of the BOF : The Fellowship of the BOF - darkelf - egghunter + buffer hunter + check length of argv[1] */
#include <stdio.h> #include <stdlib.h>
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); }
// check the length of argument if(strlen(argv[1]) > 48){ printf("argument is too long!\n"); exit(0); }
strcpy(buffer, argv[1]); printf("%s\n", buffer);
// buffer hunter memset(buffer, 0, 40); } |
+ [ LEVEL5 ] 에서 틀려진 점은 argv[1]의 길이를 체크 하네요. |
※ [ LEVEL5 ] 와 똑같음으로 바로 확인해 보도록 하죠 | |
성공!! |
wolfman : "love eyuna"
'워게임(WarGame) > BOF원정대(LOF)' 카테고리의 다른 글
[LEVEL8] orge -> troll (check argc) (0) | 2011.06.04 |
---|---|
[LEVEL7] darkelf -> orge (check argv[0]) (0) | 2011.06.02 |
[LEVEL5] orc -> wolfman (egghunter + bufferhunter) (0) | 2011.06.02 |
[LEVEL4] goblin -> orc (egghunter) (1) | 2011.06.02 |
[LEVEL3] cobolt -> goblin (small buffer + stdin) (0) | 2011.06.02 |