2013-03-13 57 views
1

假设我们有一个函数缓冲区溢出漏洞,覆盖功能参数,包括返回地址

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

利用缓冲区溢出,我们在更换栈以foo函数的地址上的返回地址。我能够做到这一点。

我该如何溢出函数参数呢?富有两个参数,有人可以帮助我了解如何使用缓冲区溢出溢出这些参数。

+0

为什么要覆盖参数?通常情况下,您只需覆盖返回地址并解决一些会导致跳转到shellcode的指令。 – Gumbo 2013-03-13 17:54:28

+0

是的你的权利,但我的目的不是跳转到shell代码。而是看看是否可以覆盖堆栈中的函数参数。 – 2013-03-14 05:31:25

+0

更清楚,当函数被调用 - 我可以给我自己的自定义参数,该功能? – 2013-03-14 07:06:27

回答

0

理论上,当函数被调用但是成功覆盖取决于堆栈的布局时,参数被压入堆栈。同样,从你的目标来看,你必须以某种方式做到这一点,以免破坏它们之间的数据。

上面的代码也有另外一个漏洞,想想吧。

+1

是的,它有格式字符串漏洞。我想学习覆盖堆栈的布局。| 我试过下面输入,但我面对分段错误... +“EBP” +“返回地址” +“ARG1” +“Arg2所得”,“字符串缓冲Lenght” – 2013-03-25 10:53:14