可能重复:
C 中的堆栈溢出利用
我需要编写一个程序来利用以下程序的堆栈溢出漏洞。我从来没有做过这样的事情。我理解它在理论上是如何工作的堆栈和溢出。但是我对C中的实现一无所知。请帮助我。我只需要清楚地了解要采取哪些步骤来溢出堆栈并生成 shell 代码。
#include <stdio.h>
int myprint(char* argv1)
{
printf("%s", argv1);
}
void foo(char* argv1, char* argv2)
{
int (*fptr)(char*) = myprint;
char buf[12];
strcpy(buf, argv1);
fptr(argv2);
}
int main(int argc, char **argv)
{
if (argc < 3)
{
printf("error\n");
return;
}
foo(argv[1], argv[2]);
}
谢谢