2

假设我们有一个函数

foo(char *name,int id)
{  
 printf ("%s%d",name,id);
}

使用缓冲区溢出,我们将堆栈上的返回地址替换为 foo 函数地址。我能够做到这一点。

我如何也溢出函数参数?foo 有两个参数,有人可以帮我理解如何使用缓冲区溢出来溢出这些参数。

4

1 回答 1

0

理论上是的,当函数被调用时,参数被压入堆栈,但随后是否成功覆盖取决于堆栈的布局。同样,从您的目标来看,您必须以一种不会破坏其间数据的方式进行操作。

上面的代码还有一个漏洞,想想看。

于 2013-03-22T10:05:41.080 回答