免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1607 | 回复: 5
打印 上一主题 下一主题

请教各位一个溢出的问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-24 10:14 |只看该作者 |倒序浏览
问题描述:主函数调用一个子函数test(), 该子函数包含有一个局部shellcode[]数组,该数组内容为实现execle("/bin/csh", "/bin/csh", (char *)0, (char *)0);功能的代码段。我能够保证已经修改了test()函数stack frame中的RET返回地址,使其值为shellcode数组地址,但是当test()返回时,出现段错误而非执行shellcode[]数组中调用 execle()的代码。我的问题是:出现段错误是不是因为linux通过MMU设置对stack进行了保护,例如不可像代码段一样可执行。使我产生这样想法的原因在于,当我修改test()函数stack frame中的RET返回地址使其为程序中的某一其它子函数入口地址时(例如:我自己定义的myoverflow()函数),当从test()函数返回时,是可以返回到myoverflow()函数去执行的,而非返回调用test()函数的main()主函数。麻烦各位兄弟指点。

my machine info: $ uname -a
Linux localhost.localdomain 2.6.18-92.el5 #1 SMP Tue Jun 10 18:49:47 EDT 2008 i686 i686 i386 GNU/Linux

论坛徽章:
0
2 [报告]
发表于 2008-07-24 10:45 |只看该作者
收藏了 等大牛

论坛徽章:
0
3 [报告]
发表于 2008-07-24 13:24 |只看该作者
是因为数据段的属性造成的segment fault;
可以考虑用attribute把數組放在.text段中。

论坛徽章:
0
4 [报告]
发表于 2008-07-24 15:42 |只看该作者

回复 #3 haohao06 的帖子

查了手册,__attribute__((section()))确实可以把一个全局变量设置为不同的section中,但没有像section("text")这样的例子,而且我试了还是segment fault 。 楼上的兄弟,能否给个例子。

论坛徽章:
0
5 [报告]
发表于 2008-07-24 17:05 |只看该作者
#include <stdio.h>
char inc[] __attribute__((section(".text")))
&nbsp;&nbsp;&nbsp;&nbsp;= {&nbsp;&nbsp;&nbsp;&nbsp;0x55,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x89, 0xe5,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xff, 0x45, 0x08,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8b, 0x45, 0x08,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xc9,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xc3
&nbsp;&nbsp;&nbsp;&nbsp;};

typedef int (*incr)(int);
int main()
{
&nbsp;&nbsp;&nbsp;&nbsp;int x = ((incr)inc)(0);
&nbsp;&nbsp;&nbsp;&nbsp;printf("b=%d\n", x);
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}


試試這個~~呵呵現學現賣

论坛徽章:
0
6 [报告]
发表于 2008-07-24 17:56 |只看该作者

回复 #5 haohao06 的帖子

哈哈。thanks very much!!!!
原来是.text,,少写个.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP