您的当前位置:
范文网
>
毕业论文
>
理科专业
>
计算机论文
>文章内容
输入您的搜索字词
提交搜索表单
网络
范文网
缓冲区溢出攻击的分析及防范策略(2)
movl $0x1,陎 # 5 bytes #执行exit(0) movl $0x0,離 # 5 bytes int $0x80 # 2 bytes call –0x2f # 5 bytes #跳到popl %esi指令处 .string \”/bin/sh”\ # 8 bytes 利用gdb的x命令可以得到上述汇编代码的二进制代码。
(2) 猜测被溢出的缓冲区的位置 有了shellcode还不够,在溢出一个缓冲区时,还必须使被溢出的返回地址正确指向shellcode。在Unix环境下,当我们去溢出另外一个程序的没有边界检查的buffer时,通常只会得到一个Segmentation fault(段错误),程序退出,再没有其他信息。这就是由于返回地址不正确引起的。 为了正确获得溢出的缓冲区在堆栈的位置,所以需要推测shellcode的起始位置,即被溢出的缓冲区buffer的位置。Unix环境下,每个进程启动时的初始堆栈的虚存位置时一样的。利用下面的程序可以近似的得到这个位置(在环境变量不同、传入的命令行参数不同时,这个值略有变动): unsigned long get_esp(void) { _asm_(“movl %esp,陎”); } void main(void) { printf(“0x%x\n”,get_esp()); } 通常,进程运行时向堆栈中写入的数据不会超过数百个字节或数千个字节,有了这个起始地址,用简单的一个个尝试的
方法也是可以攻击的。但显然这不是一种效率高的
方法。解决的办法是在缓冲区前端填充几百字节NOP指令,只要猜测的地址落在NOP指令序列中,仍可以执行shellcode,从而成倍地增加猜中的机会。 (3) 攻击代码中字节代码为零的消除 Unix的程序中大量使用了strcpy函数,shellcode中含有0x00,由于通常是攻击一个字符缓冲区,如果攻击代码中含有0,则它会被当成字符串的结尾处理,于是攻击代码被截断。消除的方法是对代码做适当的变换,因此在这里需要使用一些汇编程序设计技巧,把shellcode转换成不含0x00的等价代码。 (4)被攻击的缓冲区很小的情况 当缓冲区太小,可能使NOP部分或shellcode部分覆盖返回地址ret,导致缓冲区起址到返回地址的距离不足以容纳shellcode,这样设定的跳转地址就没有用上,攻击代码不能被正确执行。 一个方法就是利用环境变量。当一个进程启动时,环境变量被映射到进程堆栈空间的顶端。这样就可以把攻击代码(NOP串 Shellcode)放到一个环境变两中,而在被溢出的缓冲区中填上攻击代码的地址。比如,可以把shellcode放在环境变量中,并把环境变量传入到要攻击的程序中,就可以对有缓冲区溢出漏洞的程序进行攻击。利用这样方法,还可以设计很大的攻击代码。 2.2缓冲区溢出攻击的类型 缓冲区溢出的目的在于扰乱具有某些特权运行程序的功能,这样就可以让攻击者取得程序的控制权,如果该程序具有足够的权限,那么整个主机甚至服务器就被控制了。一般而言,攻击者攻击root程序,然后执行类似“exec(sh)”的执行代码来获得root的shell。但并不总是这样,为了达到这个目的,攻击者必须达到如下两个目标: l 在程序的地址空间里安排适当的代码 l 通过适当地初始化寄存器和存储器,让程序跳转到安排好的地址空间执行。 我们可以根据这两个目标来对缓冲区溢出攻击进行分类。 1.在程序的地址空间里安排适当的代码有两种在被攻击程序地址空间里安排攻击代码的方法: (1) 植入法: 攻击者向被攻击的程序输入一个字符串,程序会把这个字符串放到缓冲区里。这个字符串所包含的数据是可以在这个被攻击的硬件平台运行的指令流。在这里攻击者用被攻击程序的缓冲区来存放攻击代码,具体方式有以下两种差别: a.攻击者不必为达到此目的而溢出任何缓冲区,可以找到足够的空间来放置攻击代码; b.缓冲区可设在任何地方:堆栈(存放自动变量)、堆(动态分配区)和静态数据区(初始化或未初始化的数据)。 (2) 利用已经存在的代码 有时候攻击者所要的代码已经存在于被攻击的程序中了,攻击者所要做的只是对代码传递一些参数,然后使程序跳转到想要执行的代码那里。比如,共及代码要求执行“exec(‘bin/sh’)”,而在libc库中的代码执行“exec(arg)”,其中arg是一个指向字符串的指针参数,那么攻击者只要把传入的参数指针改向指向“/bin/sh”,然后调转到libc库中相应的指令序列即可。 2.控制程序转移到攻击代码的
转贴于:
范文网
(
www.fanwenchina.com
)
共3页: 上一页 1
[2]
[3]
下一页
打印本文
收藏本文
上一篇:
论社会主义宪政(2)
下一篇:
论社会主义宪政(3)
热点文章
·
西方网络银行的发展战略及启示
·
未雨绸缪:关于我国电子商务税收对策的思考
·
网络时代不用交税了?--互联网对税收体系的挑战
·
向IC卡系统集成业务投资的可行性
·
Internet市场分析
·
Linux下的GTK图形界面编程
·
VOD产业小览
·
CD-ROM出版物市场的初步调查
·
计算机网络系统在制碱工业中的应用
·
仓库安全管理综合信息系统
·
银行行办公信息服务系统
·
在微机上模拟电器控制线路的工作过程
·
基于WinDis 32技术实现网络通信监测
·
国内电子商务简谈
·
发展我国电子商务都要以推进B to B业务
·
宽带化―电信发展的必由之路
相关文章
·
缓冲区溢出攻击的分析及防范策略(3)
·
缓冲区溢出攻击的分析及防范策略(1)
·
电话远程报警器(jsj188)
·
GTK图形编程
·
CIMS环境下基于特征的产品模型
·
银行服务系统
·
当前计算机技术与GIS发展趋势
·
MPEG-4技术及应用综述
·
CAD应用软件的新动态
·
加入WTO对我国网络营销发展的影响
·
计算机信息传输技术在办公自动化中的应用
·
关于计算机应用工作的思考与实践
·
基于Mschart的数据库图表应用编程
·
论检察机关案件管理系统的特征
·
在IIS 4.0上配置虚拟主机实现虚拟Interne
·
网络会计在我国的发展问题探析
最新文章
·
电子政务环境下公务员的培养和使用
·
基于ASP.NET的Web网络应用程序开发的安全策略实践
·
关于计算机网络辅助大学英语教学的思考
·
数据库技术在Web中的应用(网上店铺建设)
·
多屏卡编程实例
·
硬盘系统在播出领域的应用
·
用计算机程序制作三维立体画
·
于修船企业ERP系统的设计思想
·
古籍文献数据库存在的问题与突破的方向
·
浅谈互联网对未成年人的影响及对策
·
Visual C 中的开放数据库连接技术论文
·
浅谈CAD技术在工程设计中的应用
·
整合最强音 C51主板精挑细选
·
疯狂“组策略”(上)
·
纽芬兰纪念大学计算机工程应用科学硕士项目
·
单片机与组态王软件通讯的解决方案
·
VC6中VC6中调用ProEssentialsv5图表组件实现科学图
·
信息全程跟踪及应用安全审计保护系统
·
网络会计在我国的发展问题探析
·
论检察机关案件管理系统的特征