b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

缓冲区溢出攻击的方法_一定程度上能防范缓冲区溢出攻击的措施有_vc缓冲区溢出攻击例子(6)

电脑杂谈  发布时间:2017-02-03 20:04:41  来源:网络整理

(1) 函数返回地址

每当一个函数调用发生时,调用者会在堆栈中留下函数返回地址,它包含了函数结束时返回的地址。攻击者通过溢出这些自动变量,使这个返回地址指向攻击代码,这样就通过改变程序的返回地址,当函数调用结束时,程序跳转到攻击者设定的地址,而不是原先的地址。这类的缓冲区进出被称为“stack smashing attack”,是目前常用的缓冲区溢出攻击方式。

(2) 函数指针

“Void(*foo)()”中声明了一个返回值为Void函数指针的变量foo。函数指针定位任何地址空间,所以攻击者只需在任何空间内的函数指针附近找到一个能够溢出的缓冲区,然后溢出来改变函数指针,当程序通过函数指针调用函数时,程序的流程就会发生改变而实现攻击者的目的。

(3) 长跳转缓冲区

在C语言中包含了一个简单的检验/恢复系统,称为“setjmp/longjmp”,意思是在检验点设定“setjmp(buffer)”,用longjmp(buffer)“来恢复检验点。然而,如果攻击时能够进入缓冲区的空间,那么“longjmp(buffer)”实际上是跳转到攻击者的代码。像函数指针一样,longjmp缓冲区能够指向任何地方,所以攻击者所要做的就是找到一个可供溢出的缓冲区。一个典型的例子就是Perl 5.003,攻击者首先进入用来恢复缓冲区溢出的longjmp缓冲区,然后诱导进入恢复模式,这样就使Perl的解释器跳转到攻击代码上了。

3.综合代码植入和流程控制技术

最简单和常见的溢出缓冲区攻击类型就是在一个字符串里综合了代码植入和激活记录。攻击者定位一个可供溢出的自动变量,然后向程序传递一个很大的字符串,在引发缓冲区溢出改变激活记录的同时植入了代码(因为C语言程序员通常在习惯上只为用户和参数开辟很小的缓冲区)。

代码植入和缓冲区溢出不一定要在一次动作内完成,攻击者可以在一个缓冲区内放置代码(这个时候并不能溢出缓冲区),然后攻击者通过溢出另一个缓冲区来转移程序的指针。这样的方法一般用来解决可供溢出的缓冲区不够大(不能放下全部的代码)。如果攻击者试图使用已经常驻的代码而不是从外部植入代码,他们通常必须把代码做为参数。举例说明,在libc(几乎所有的C程序都用它来连接)中的一部分代码段会执行“exec(something)”,其中的something就是参数,攻击者使用缓冲区溢出改变程序的参数,然后利用另一个缓冲区溢出,使程序指针指向libc中的特定的代码段。三 缓冲区溢出攻击的防范策略

缓冲区溢出攻击的防范是和整个系统的安全性分不开的。如果整个网络系统的安全设计很差,则遭受缓冲区溢出攻击的机会也大大增加。针对缓冲区溢出,我们可以采取多种防范策略。

1.系统管理上的防范策略

(1) 关闭不需要的特权程序

由于缓冲区溢出只有在获得更高的特权时才有意义,所以带有特权的Unix

下的suid程序和Windows下由系统管理员启动的服务进程都经常是缓冲区溢出攻击的目标。这时候,关闭一些不必要的特权程序就可以降低被攻击的风险。如Solaris下的fdformat是个有缓冲区溢出漏洞的suid程序,因为这个格式化软盘的命令用的较少,最直接的措施是去掉这个程序或者去掉suid位。当有缓冲区溢出漏洞的程序还没有补丁时,就可以用这种方法。

(2) 及时给程序漏洞打补丁

这是漏洞出现后最迅速有效的补救措施。大部分的入侵是利用一些已被公布的漏洞达成的,如能及时补上这些漏洞,无疑极大的增强了系统抵抗攻击的能力。

这两种措施对管理员来说,代价都不是很高,但能很有效地防止住大部分的攻击企图。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-30355-6.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...