基于堆栈的缓冲区溢出

时间:2018-12-08 11:54:05

标签: c security stack-based

为了安全起见,我们必须利用基于堆栈的缓冲区溢出来利用程序,该程序为:

#include <stdio.h>
#include <unistd.h>

void greetUser(char *s){
   char buf[666];
   strcpy(buf, s);
   printf("Hello %s!\n", buf);
}

int main(int argc, char **argv) {
   if(argc < 2) {
      printf("Usage: %s YourName\n", argv[0]);
      exit(1);
   }

   greetUser(argv[1]);

   return 0;
}

但是我不知道该怎么做。我知道我必须放入666个以上的字符才能使缓冲区溢出并直接写入堆栈,但是我如何知道在那个点要覆盖哪个地址?任何人都经历过吗?

0 个答案:

没有答案