为了安全起见,我们必须利用基于堆栈的缓冲区溢出来利用程序,该程序为:
#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个以上的字符才能使缓冲区溢出并直接写入堆栈,但是我如何知道在那个点要覆盖哪个地址?任何人都经历过吗?