全球旧事资料 分类
龙源期刊网httpwwwqika
comc
缓冲区溢出攻击方式以及防范策略
作者:黄文庆来源:《电脑知识与技术》2011年第29期
摘要:缓冲区溢出是被广泛利用的网络攻击方式,该文分析缓冲区溢出攻击的基本原理,针对堆栈溢的攻击方式列举实例并分析其攻击方法,并根据该方法提出防范缓冲区溢出的措施。
关键字:缓冲区溢出攻击;堆栈;防御
中图分类号:TP393文献标识码:A文章编号:10093044201129711702
BufferOverflowAttacka
dGuardStrategy
HUANGWe
qi
g
DeptofComputera
dI
formatio
E
gi
eeri
gHezeU
iversityHeze274015Chi
a
AbstractBufferoverflowiswidelyusedfor
etworkattackmodethispapera
alyzesthebasicpri
cipleofthebufferoverflowattackaccordi
gtothestackoverflowattackexamplesa
da
alysisofitsattackmethoda
daccordi
gtothemethodproposedthemeasuresofpreve
tio
ofbufferoverflow
Keywordsbufferoverflowattackstackdefe
se
1缓冲区溢出攻击的原理
缓冲区是进程在计算机内存中的一个连续的地址空间,在这个空间中保存了给定的数据,当进程向缓冲区中写入超过地址空间长度的数据时,就会使缓冲区产生溢出,从而破坏程序的堆栈,从而运行其他指令达到攻击的目的。造成缓冲区溢出的原因有很多,但归根结底是因为程序设计过程中没有检查用户输入的参数是否符合计算机运行是的要求。
2缓冲区溢出攻击方式
缓冲区溢出的攻击方式一般可分为以下四种情况:
1)栈溢出(stacksmashi
g)
本方法是进程中断执行过程中利用strcpy()等函数覆盖堆栈。由于进程执行过程中未检查输入缓冲区的数据长度,攻击者找到溢出点后,输入超过缓冲区长度的数据(包括精心构造
f龙源期刊网httpwwwqika
comc
的填充缓冲区长度用的空指令以及shellcode编码),导致地址越界,越界部分覆盖栈中局部变量空间之上的栈桢指针EBP以及函数返回retaddr的地址,并恰好使shellcode覆盖EIP,当函数执行返回中断之前的指令ret指令时,retaddr从栈中弹出,作为返回指令的地址赋给EIP寄存器,EIP寄存器便由本来执行原进程中断之前的流程改变成了执行事先编辑好的shellcode(如图1所示)。
2)堆溢出(malloc()函数)
堆溢出是利用函数溢出来进行攻击。malloc()函数又叫动态内存分配函数,功能是分配长度为
um_bytes字节的内存空间给应用程序。堆溢出方式和传统的栈溢出一样,当输入超出malloc()预先分配的内存空间大小时候,就会覆盖掉这段空间之后的一段存储区域,如果该存储区域有一个重要的变量比如euid(有效用户标示),那么就可以用它来导致攻击。另一种是典型的doublefree堆腐r
好听全球资料 返回顶部