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