#include #include #include #include void segfault_handler() { printf("Segfault Occurred, incorrect address.\n"); exit(0); } void call_functions() { char buffer[64]; printf("Enter your name:"); fgets(buffer, 64, stdin); printf(buffer); unsigned long val; printf(" enter the address to jump to, ex => 0x12345: "); scanf("%lx", &val); void (*foo)(void) = (void (*)())val; foo(); } int win() { FILE *fptr; char c; printf("You won!\n"); // Open file fptr = fopen("flag.txt", "r"); if (fptr == NULL) { printf("Cannot open file.\n"); exit(0); } // Read contents from file c = fgetc(fptr); while (c != EOF) { printf ("%c", c); c = fgetc(fptr); } printf("\n"); fclose(fptr); } int main() { signal(SIGSEGV, segfault_handler); setvbuf(stdout, NULL, _IONBF, 0); // _IONBF = Unbuffered call_functions(); return 0; }