第六节 缓冲区溢出(4/5)
这样的话呢,再有客人来的时候,他可能就直接从这个柜台上拿了,不用满店跑,大大节省了客人地时间。而这个专用柜台,就是缓冲区。
计算机上几乎所有的存储设备都有缓冲区,比如硬盘,当我们向我们地硬盘输入数据的时候,通常都是先输入到缓冲区,直到你把缓冲区塞满之后,才会再写入硬盘。
这样的好处,就跟前面说的租书店的故事一样,可以节省时间,避免过于频繁地写盘。
现在大家知道缓冲区是怎么回事了,那么缓冲区溢出又是怎么回事呢?
我们再来形象地打个比方,你是个很成功的公司高层,你有一个专职小秘。她除了供你调戏,帮你打文件,跑腿以及帮你陪客户喝酒之外,她还得帮你干另外一件事,那就是帮你倒茶。
有一天,她来到在你桌边,往你杯子里倒茶。这个杯子是只能装八百五十毫升水的杯子,而茶壶是一千五百毫升的容量,通常来说,你的小秘书会往你的茶杯里倒上七百五千至八百毫升,总之绝对不超过八百五十好生的水。
但是这一次,你的秘书却一直让水壶里的水往你的杯子里灌。那么结果会是什么呢?很显然,水将会从杯子里溢出来。
这跟缓冲区溢出是同样的道理,当数据容量超过缓冲区的容量的时候,就像水一样,缓冲区的数据也会溢出来,这也就是缓冲区溢出。
缓冲区溢出分为两种情况,一种是偶然的,一种是恶意的。如果是偶然的,那没什么大不了的,不过就是应用程序错误而已。但是如果是恶意的,那么黑客就可以趁机运行特别程序,获得优先级,指示计算机破坏文件,改变数据,泄露敏感信息,产生后门访问点,部分或者全部的控制这台计算机。
这样说,或许大家还是有点头晕,好吧,那我们就再形象一点。接着刚才的比方。
一般来说,你地小秘把水倒满。很可能是一时疏忽,这个时候,最多就是你被烫了一下,不满地瞪了她一眼,让她把桌子抹干净就完了。
这就是偶然的缓冲区溢出。
但是如果这个时候。你地秘书已经被别人收买了,她就会故意狂倒,水从杯子里溢出来。把你的整个桌面倒地到处都是水,连你腿上都滴满了。你气死了,跳起来骂娘,然后到另一个房间去换衣服。
而这个时候,你的秘书就趁机赶紧把你桌上的文件全部换了一遍,等你回来的时候。看到地,是你的敌人给你准备好的文件。这些文件促使你对当前地形势产生错误的判断,于是,你就按照敌人所希望你做的那样。做出他们想要你做的决定。
你自己并不觉得,但是事实上,你已经被你的敌人控制住。
这就是恶意的缓冲区溢出。
一般来说。缓冲区溢出攻击地目的,在于扰乱具有某些特权运行的程序的功能。这样可以使得攻击者取得程序地控制权,如果该程序具有足够的权限,那么整个主机就被控制了。为了达到这个目的,攻击者必须达到如下地两个目标:
第一,在程序的地址空间里安排适当地代码。
第二,通过适当地初始化寄存器和存储器,让程序跳转到我们安排的地址空间执行。
两个目标,需要两个步骤来完成,第一个步骤就是将攻击代码放入被攻击程序的地址空间。第二个步骤,就是使目标程序的缓冲区溢出,并且执行转移到攻击代码。
这个过程方法很多,就不在这里一一赘述了。
而段天狼就是在面具岛屿的共用系统中,发现了系统中发现了一个有破绽的代码。段天狼之所以向这个代码传递出一-->>