缓存溢出Buffer Overflow

缓存溢出是编程中常见的错误,源于C语言等不进行数组边界检查,可能导致程序执行流程错误,甚至控制被攻击的计算机。攻击者通过超出长度的字符串覆盖返回地址,执行恶意代码,如Shell Code,以获取系统控制权。
摘要由CSDN通过智能技术生成

缓存溢出(Buffer overflow),是指在存在缓存溢出安全漏洞的计算机中,攻击者可以用超出常规长度的字符数来填满一个域,通常是内存区地址。在某些情况下,这些过量的字符能够作为“可执行”代码来运行。从而使得攻击者可以不受安全措施的约束来控制被攻击的计算机。

缓存溢出(或译为缓冲溢出)为 黑客最为常用的攻击手段之一,蠕虫病毒对操作系统 高危漏洞的溢出高速与大规模传播均是利用此技术。
缓存 溢出攻击从理论上来讲可以用于攻击任何有缺陷不完美的程序,包括对 杀毒软件防火墙等安全产品的攻击以及对银行程序的攻击。

 

下面让我们了解一下缓存溢出的原理。众说周知,c语言不进行数组的边界检查,在许多运用c语言实现的应用程序中,都假定缓冲区的大小是足够的,其容量肯定大于要拷贝的字符串的长度。然而事实并不总是这样,当程序出错或者恶意的用户故意送入一过长的字符串时,便有许多意想不到的事情发生,超过的那部分字符将会覆盖与数组相邻的其他变量的空间,使变量出现不可预料的值。如果碰巧,数组子程序的返回地址邻近时,便有可能由于超出的一部分字符串覆盖了子程序的返回地址,而使得子程序执行完毕返回时转向了另一个无法预料的地址,使程序的执行流程发生了错误。甚至,由于应用程序访问了不在进程地址空间范围的地址,而使进程发生违例的故障。这种错误其实是编程中常犯的。

 

http://hi.baidu.com/caterqiu/item/29598d475bcbf8af61d7b922 参考这哥们汇编调试。

组成部分

一个利用 缓冲区溢出而企图破坏或非法进入系统的程序通常由如下几个部分组成:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值