堆栈溢出进行侵入

转载 2012年03月24日 23:48:08
stack overflow (堆栈溢出)栈溢出(又称缓冲区溢出)攻击是最常用的黑客技术之一。我们知道,UNIX本身以及其上的许多应用程序都是用C语言编写的,C语言不检查缓冲区的边界。在某些情况下,如果用户输入的数据长度超过应用程序给定的缓冲区,就会覆盖其他数据区。这称作“堆栈溢出或缓冲溢出”。 一般情况下,覆盖其他数据区的数据是没有意义的,最多造成应用程序错误。但是,如果输入的数据是经过“黑客”精心设计的,覆盖堆栈的数据恰恰是黑客的入侵程序代码,黑客就获取了程序的控制权。如果该程序恰好是以root运行的,黑客就获得了root权限,然后他就可以编译黑客程序、留下入侵后门等,实施进一步地攻击。按照这种原理进行的黑客入侵就叫做“堆栈溢出攻击”。 为了便于理解,我们不妨打个比方。缓冲区溢出好比是将十磅的糖放进一个只能装五磅的容器里。一旦该容器放满了,余下的部分就溢出在柜台和地板上,弄得一团糟。由于计算机程序的编写者写了一些编码,但是这些编码没有对目的区域或缓冲区——五磅的容器——做适当的检查,看它们是否够大,能否完全装入新的内容——十磅的糖,结果可能造成缓冲区溢出的产生。如果打算被放进新地方的数据不适合,溢得到处都是,该数据也会制造很多麻烦。但是,如果缓冲区仅仅溢出,这只是一个问题。到此时为止,它还没有破坏性。当糖溢出时,柜台被盖住。可以把糖擦掉或用吸尘器吸走,还柜台本来面貌。与之相对的是,当缓冲区溢出时,过剩的信息覆盖的是计算机内存中以前的内容。除非这些被覆盖的内容被保存或能够恢复,否则就会永远丢失。 在丢失的信息里有能够被程序调用的子程序的列表信息,直到缓冲区溢出发生。另外,给那些子程序的信息——参数——也丢失了。这意味着程序不能得到足够的信息从子程序返回,以完成它的任务。就像一个人步行穿过沙漠。如果他依赖于他的足迹走回头路,当沙暴来袭抹去了这些痕迹时,他将迷失在沙漠中。这个问题比程序仅仅迷失方向严重多了。入侵者用精心编写的入侵代码(一种恶意程序)使缓冲区溢出,然后告诉程序依据预设的方法处理缓冲区,并且执行。此时的程序已经完全被入侵者操纵了。 入侵者经常改编现有的应用程序运行不同的程序。例如,一个入侵者能启动一个新的程序,发送秘密文件(支票本记录,口令文件,或财产清单)给入侵者的电子邮件。这就好像不仅仅是沙暴吹了脚印,而且后来者也会踩出新的脚印,将我们的迷路者领向不同的地方,他自己一无所知的地方。 缓冲区溢出的处理 你屋子里的门和窗户越少,入侵者进入的方式就越少…… 由于缓冲区溢出是一个编程问题,所以只能通过修复被破坏的程序的代码而解决问题。如果你没有源代码,从上面“堆栈溢出攻击”的原理可以看出,要防止此类攻击,我们可以: 1、开放程序时仔细检查溢出情况,不允许数据溢出缓冲区。由于编程和编程语言的原因,这非常困难,而且不适合大量已经在使用的程序; 2、使用检查堆栈溢出的编译器或者在程序中加入某些记号,以便程序运行时确认禁止黑客有意造成的溢出。问题是无法针对已有程序,对新程序来讲,需要修改编译器; 3、经常检查你的操作系统和应用程序提供商的站点,一旦发现他们提供的补丁程序,就马上下载并且应用在系统上,这是最好的方法。但是系统管理员总要比攻击者慢一步,如果这个有问题的软件是可选的,甚至是临时的,把它从你的系统中删除。举另外一个例子,你屋子里的门和窗户越少,入侵者进入的方式就越少。 黑客主要先从微软漏洞公布表上或者0days上找到漏洞,再根据漏洞编写溢出程序(好多都自带扫描功能)包括本地提权溢出,远程提权溢出.编好后,先用那个扫描一下有漏洞的主机,然后再用它溢出获得权限,控制目标主机.

相关文章推荐

造成堆栈溢出异常的XML

  • 2011年07月08日 10:59
  • 236KB
  • 下载

windows下的堆栈溢出利用技术.

  • 2011年01月15日 11:02
  • 581KB
  • 下载

【编译器】堆栈溢出(Stack Overflow)

堆栈溢出的本质是在某次函数调用中,编译器分配的空间超过了堆栈可以允许的范围。堆栈的大小和许多因素有关:编程语言、机器架构、多线程……操作系统为每个线程分配独立的线程栈,一般情况下为1M。 1. 较大...

堆栈溢出技术从入门到高深.doc

  • 2009年05月14日 15:32
  • 64KB
  • 下载

堆栈溢出技术从入门到精通

  • 2008年08月06日 16:50
  • 18KB
  • 下载

Windbg的gflags.exe调试堆栈溢出,访问越界等问题。

gflags.exe是Windbg下的一个小工具,非常好用,对于调试程序隐藏的bug很有帮助。  如:我在vs2015中遇到访问越界的问题,但程序不会在越界的地方发生崩溃中断,而是在一个不可能存在访问...
  • bao_bei
  • bao_bei
  • 2017年06月28日 14:22
  • 394

IAR编译器堆栈溢出问题查找

  • 2014年03月21日 12:20
  • 24KB
  • 下载

关于堆栈溢出的白皮书

  • 2008年02月18日 10:10
  • 256KB
  • 下载

关于堆栈溢出的一点疑问

http://www.oldlinux.org/oldlinux/archiver/?tid-7890.html堆和栈 一般认为在c中分为这几个存储区 1栈 - 有编译器自动分配释放 2堆 - 一般由...

RPC DCOM堆栈溢出实验

  • 2013年05月09日 16:20
  • 315KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:堆栈溢出进行侵入
举报原因:
原因补充:

(最多只允许输入30个字)