#include #include #include main(int argc, char *argv[]) { char buffer[40]; FILE *fp; char *lib_addr, *execve_offset, *execve_addr; char *ret; if(argc < 2){ printf("argv error\n"); exit(0); } // gain address of execve fp = popen("/usr/bin/ldd /home/giant/assassin | /bin/grep libc | /bin/awk '{print $4}'", "r"); fgets(buffer, 255, fp); sscanf(buffer, "(%x)", &lib_addr); fclose(fp); fp = popen("/us..
bugbear.c #include #include 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 betrayed you!!\n"); exit(0); } strcpy(buffer, argv[1]); printf("%s\n", buffer); } bugbear는 아주 간단한 문제였다. argv[1][47]이 \xbf가 아니여야 하는 거였는데 이 부분은 ret의 주소 맨 앞자리에 해당된다. 그래서 system함수를 이용하여 풀기로 하였다. buffer와 sfp 44byte는 nop로 채운뒤 ret에..
- Total
- Today
- Yesterday