【老维小科普】溢出攻击
hacknet吧
全部回复
仅看楼主
level 11
上周老婆平地摔膝盖骨裂,在医院照顾她,现在也还没出院。。。今天接着聊黑客攻击。
这次说说溢出攻击。先解释一下什么是溢出,顾名思义,溢出就是水装满了,流到了杯子外面。计算机系统的溢出,大致分为两类,数据溢出和内存溢出。其中数据溢出倒是基本不能用于黑客攻击,更多的是造成程序BUG,在此就不详述。主要说说内存溢出。
首先说一下基本的计算机原理。计算机的程序,并不是在硬盘(或者光盘等)外部存储器上直接运行的,而是在内存(内部存储器)中运行。执行一个程序的简略步骤是:操作系统将程序从硬盘提取到内存,然后再在内存上运行。操作系统会按照一定的原则为程序安排一定数量的内存,当程序在使用内存的时候,如果超出了操作系统的分配的内存范围,就会造成内存溢出。即是:该程序使用了本不应该由它使用的内存。
在内存溢出里,被黑客大量使用的是缓冲区溢出攻击。缓冲区是由操作系统分配给程序,用于缓冲的内存,比如存放一些临时数据,存放用户输入的数据,或者程序的参数等等。黑客通过超出数据规定长度的方法来制造溢出。例如,某个程序需要用户输入一个10位的数据作为参数,黑客输入15位,那么在缓冲区里,这个参数就溢出了5位。但是要注意的是,缓冲区溢出并不是一定可以成为攻击手段,因为与社会工程学攻击,DDoS攻击,中间人攻击等方式相比,缓冲区溢出是一种程序漏洞,也就是说,是因为程序编写得不严谨造成的。比如说,前面那个例子,程序员在要求用户输入10位数时,加入了数据长度检查的部分,使得参数超过10位就报错而中止执行,就不会产生溢出攻击。
黑客在使用缓冲区溢出时,首先需要找到一个可以进行溢出的程序,这个程序通常应当是具有较高权限的程序(否则的话没什么意义),然后通过编写特定的代码,并将代码安排至适当的内存位置,再然后通过溢出的方法,使得程序跳转到所安排的代码的位置进行执行,以达到提权的目的。
缓冲区溢出攻击是现在远程网络攻击中使用得最多的方式了,而且它的主要目的是提权,而不是破坏,再加上,现在软件规模越来越大,出现各种漏洞几乎难以避免。对于普通使用者来说,也只能时及时的打补丁,弥补漏洞。
这次就到这里,感觉都聊的差不多了,想想还有什么可以聊聊的。
2017年04月11日 10点04分 1
level 10
第一次听到溢出是在学柞还是啥的,早不记得了😕
2017年04月11日 10点04分 2
学柞?学过C的话,基本都会对溢出有一定的概念,C很容易就溢出。
2017年04月11日 11点04分
说真的还年轻才学Pascal。。柞只是偶尔提到的
2017年04月11日 13点04分
level 9
虽然一个字都没看懂 但还是不由自主的把膝盖献了出去
然后祝大大老婆早日出院(就可以抱上床嘿嘿嘿啦)
2017年04月12日 12点04分 3
1