text: /*
   * phoenix/stack-three, by https://exploit.education
   *
   * The aim is to change the contents of the changeme variable to 0x0d0a090a
   *
   * When does a joke become a dad joke?
   *   When it becomes apparent.
   *   When it's fully groan up.
   *
   */
  
  #include <err.h>
  #include <stdio.h>
  #include <stdlib.h>
  #include <string.h>
  #include <unistd.h>
  
  #define LEVELNAME "phoenix/stack-three"
  #define BANNER \
    "Welcome to " LEVELNAME ", brought to you by https://exploit.education"
  
  char *gets(char *);
  
  void complete_level() {
    printf("Congratulations, you've finished " LEVELNAME " :-) Well done!\n");
    exit(0);
  }
  
  int main(int argc, char **argv) {
    volatile int (*fp)();
    char buffer[64];
  
    printf("%s\n", BANNER);
  
    fp = NULL;
    gets(buffer);
  
    if (fp) {
      printf("calling function pointer @ %p\n", fp);
      fflush(stdout);
      fp();
    } else {
      printf("function pointer remains unmodified :~( better luck next time!\n");
    }
  
    exit(0);
  }
  