首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >return- to -libc exploit :在哪里为system()调用提供参数?

return- to -libc exploit :在哪里为system()调用提供参数?
EN

Stack Overflow用户
提问于 2011-10-15 03:52:08
回答 1查看 1.8K关注 0票数 3

我正在尝试写一个返回到libc的漏洞,但是我不知道我应该把我的system()调用的参数放在堆栈的什么地方。

易受攻击的函数是

代码语言:javascript
复制
void func(char *str)
{
     char buffer[12];
     strcpy(buffer,str);
}

此函数的堆栈将如下所示:

代码语言:javascript
复制
 -----------
 str
 -----------
 return address
 -----------
 previous frame pointer
 -----------
 buffer
 -----------

我知道我必须用system()调用的地址覆盖返回地址,但是我应该把它的参数的地址放在哪里?为什么?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-15 04:00:48

指向该参数的指针应位于返回地址的正上方。也就是说,在覆盖之后,您的堆栈应该如下所示:

代码语言:javascript
复制
-----------
shellcode: /bin/whatever ...
...
...
...
\0
-----------
&shellcode    <-- str is here
-----------
&system       <-- return address is here
-----------
previous frame pointer <--- don't corrupt this
-----------
padding       <-- buffer

请注意,这意味着当到达strcpy时,您必须知道%esp是什么(以避免损坏前一个帧指针)。此外,所有指针都不能包含零字节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7772847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档