
文章插图
【如何检测网站漏洞的原因】软件漏洞分门别类 , 主要有以下几大种类:硬件中内嵌的软件的漏洞,电脑或者手机上的软件的漏洞,网站的动态语言处理用户的数据时的漏洞 。
导致这些漏洞的原因如下:有些是开发时由于程序员经验不足或者疏忽而留下了安全隐患,有些是本身设计时的思路就有问题,典型的比如以前听说过有些网游可以刷币 。
而楼主的所说的软件漏洞,我觉得应该是偏向于软件二进制的漏洞 。
软件漏洞的挖掘一般利用fuzz工具进行测试 。
fuzz工具的原理很简单--就是通过发送海量的各种不同的畸形数据给一个软件处理,如果软件处理出错了就分析原因 。
我们先说软件的工作模型:我们知道软件的工作模式概括地说就是:指令处理数据,指令把数据处理完成后输出结果 。
举个生活中的例子:类似你炒菜,你的翻,炸,炒就是指令,数据就是各种食材 。
经过各种指令的处理后的结果当然就是一桌饭菜啦 。
软件的工作模型类似:你用word打开一个doc文档,word软件就得到了素材,然后对doc文件中的各种数据进行处理,最后呈现在你面前的就是一份精美的文档(比如简历或者一份图文并茂的小说等) 。
理解以上的内容,再说下面的: 。
一,处理流程是可以被改变的 。
还是刚才的案例,你用word打开一个doc的文档文件,这个文件就是数据,这个文档里的任何数据都是你自己完全可以控制的 , 而word软件就是ms公司生产的工具,他里面的指令是固定的,处理流程也是预先设定好固定不变的 。
当软件处理你的文档的时候,如果能在改变软件的处理流程,那就是一个漏洞 。
还是举个例子:广东的血汗工厂的流水车间,其工作模式和流程就很有代表性 。
一条组装电视机的流水线 , 几名员工先后分工合作,其中第一步张三负责安装后盖,第二步李四负责安装射线管,第三步王五负责安装电路板 。
当张三在安装后盖时,发现产品没有射线管,于是他在产品上贴上“返回给张三”的标签再转发给李四 , 李四接到后 , 发现没有电路板 , 于他又贴上“返回给李四”的标签 , 再转给王五 。
王五装上电路板后,根据返回标签所示 , 返回给了李四,李四拿到半成品 , 装上射线管 , 再根据标签返回给张三 。
这一个流程就完成了 。
如果在工作的过程中,返回标签掉了怎么办?或者不小心从哪飘来了一个陈六的返回标签刚好盖住了返回标签的位置怎么办?那按严格的执行流程,当然是返回给了陈六 , 于是乎,处理流程被改变了 。
明白么? 。
真实的cpu工作方式与这个类似 , CPU经常会在各种场地来回地跳转 。
以c语言中的调用函数为例,如果你调用一个函数,那函数执行完了,是不是得接着回到跳转点继续执行下面的代码?为了实现这个效果,cpu在跳转到目标地址之前 , 会把当前地址保存起来,以后要跳回来就看看这个地址就知道跳到哪了 , 这个就类似上文所说的返回标签,我们叫它返回地址 , 这个返回地址是个数据,就存放在某个内存区域内,在指令处理完当前的数据后 , 要从这个数据区取回返回地址 。
从哪来就回哪去 。
就这么简单,如果这个数据区被篡改了,那不好意思,cpu是很呆板的,他就会跳到指定的地址去 。
二 , 数据等于指令 , 指令也等于数据 。
计算机在工作的时候,数据和指令都是先放到内存中,再由cpu执行指令处理数据的 。
但x86的cpu在设计之初就没严格区分指令和数据 。
只是在cpu内设计了指向指令区的寄存器eip,和指向数据区的寄存器(有很多,比如esp,ebp) 。
换言之,内存中这么多信息,凡是eip指向的区域就是指令;esp,ebp等指向的就是数据,如果eip指向了数据 , 那毫无疑问,数据这时变成了指令,他当然可以被cpu所执行 。
如果你明白了以上两点 , 再想想,如果 word软件在处理你的文件数据时,由于处理不慎,不小心把文档中的数据覆盖掉了返回地址 , 那么cpu返回的地址就出错了 , 如果精心构造一个虚假的返回地址,那么执行流程被你控制了,你把返回地址指向到你的文件中的某个地址上,而这个地址你事先放了一些数据,cpu把这些数据当指令来执行,于是乎,这个软件就执行了非微软官方的指令 。
推荐阅读
- 制表位如何用
- 如何选择创业项目
- 如何使用电脑键盘关机
- 如何使用电脑摄像头和麦
- 如何提高英语听力
- 如何彻底清除手机浏览器历史记录
- 如何沟通员工离职原因
- 家庭主妇如何理财才能赚到零花钱
- 如何在excel中求和再减一个数
- 如何运营抖店
