보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
//written by andersonc0d3 #include #include #include #include int main(int argc, char **argv) { FILE *fp = fopen("/levels/level10_alt.pass", "r"); struct { char pass[20], msg_err[20] } pwfile = {{0}}; char ptr[0]; if(!fp || argc != 2) return -1; fread(pwfile.pass, 1, 20, fp); pwfile.pass[19] = 0; ptr[atoi(argv[1])] = 0; fread(pwfile.msg_err, 1, 19, fp); fclose(fp); if(!strcmp(pwfile.pass, argv[1..
#include #include int main(int argc, char **argv) { int pad = 0xbabe; char buf[1024]; strncpy(buf, argv[1], sizeof(buf) - 1); printf(buf); return 0; } FTZ11번, 20번에 있는 FSB(Format String Bug)랑 똑같은 문제. printf(buf); 에서 FSB취약점이 발생한다.일단 덮어쓸 곳과 덮을 곳이 필요하다. NX-Bit가 걸려있지 않고 ASLR이 걸려있지 않기 때문에Shell-Code를 환경변수에 올려두고 기본적으로 프로그램에서 제공해주는소멸자인 .dtors(무조건 실행됨)을 덮어씌워 보자. [17] .dtors PROGBITS 080494d0 0004d0 000008..
// writen by bla for io.smashthestack.org #include #include #include class Number { public: Number(int x) : number(x) {} void setAnnotation(char *a) { memcpy(annotation, a, strlen(a)); } virtual int operator+(Number &r) { return number + r.number; } private: char annotation[100]; int number; }; int main(int argc, char **argv) { if(argc
//written by bla #include #include #include int main(int argc, char **argv) { int count = atoi(argv[1]); int buf[10]; if(count >= 10 ) { return 1; } memcpy(buf, argv[2], count * sizeof(int)); if(count == 0x574f4c46) // 1464814662 { printf("WIN!\n"); execl("/bin/sh", "sh" ,NULL); } else { printf("Not today son\n"); } return 0; } 기본적인 Int Overflowe문제. 참고int 의 최소값: -2147483648int 의 최대값: 2147483647 ..
//written by bla //inspired by nnp #include #include #include enum { LANG_ENGLISH, LANG_FRANCAIS, LANG_DEUTSCH, }; int language = LANG_ENGLISH; struct UserRecord { char name[40]; char password[32]; int id; }; void greetuser(struct UserRecord user) { char greeting[64]; switch (language) { case LANG_ENGLISH: strcpy(greeting, "Hi "); break; case LANG_FRANCAIS: strcpy(greeting, "Bienvenue "); break;..