软件漏洞发觉与防范的学习(一)缓冲区溢出漏洞
2013-04-13 23:10
267 查看
安全很重要,从今天开始学习,愿与大家分享!
软件安全漏洞
软件的bug被利用来对用户造成恶意攻击,如给用户计算机安装木马,或直接盗取用户计算机上的秘密信息等。这时候就可以称之为软件的安全漏洞。
软件漏洞分类
1缓冲区溢出漏洞
最容易发生,原理是由于软件在处理用户数据时使用了不限边界的拷贝,导致程序内部的关键数据被覆盖,引发的安全问题。
缓冲区指的是OS中用来保存临时数据的空间,一般分为堆和栈。
利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。
当前web和OS中,50%以上的攻击都来自于这个漏洞。而缓冲区溢出中岁危险的是栈溢出,因为入侵者可以利用栈溢出,在函数返回时改变返回程序的地址,让其转移到任意地址,危害是使程序崩溃导致拒绝服务或者是跳转并且执行一段恶意代码,比如得到shell,然后恣意妄为。
下面主要讲解一下栈溢出。
栈溢出的最直接危害是过量放进内存空间的数据会将函数的返回地址覆盖。“返回地址”指的是,程序调用函数时,CPU首先将执行完这个函数后将要执行的指令地址存储到栈空间中,然后CPU执行函数,执行完毕后,CPU取出保存的指令地址,然后接着执行。栈是一个先进后出(LIFO)的结构,而堆是一个先进先出(FIFO)的结构。返回地址保存在栈中,而程序一般定义的空间也在栈中,这就导致有了覆盖返回地址的机会。
这个覆盖值可以使故意输入的值,这样就能完全控制把什么数值覆盖到程序的返回地址上,如果将一段恶意代码预先放入内存中的某个地址,再将这个地址覆盖到程序的返回地址上,这样程序一旦溢出后返回,就会跳到目的代码上去执行。(ShellCode和OllyICE会在后面介绍)
因此,可以用不同长度的数据来测试软件,从而判断多长的数据能成功覆盖程序的返回地址。一旦发现刚好覆盖了,就马上替换这4个字节数据为jmp esp或者call esp指令的地址,然后加上ShellCode,在次提交给软件,即可成功的利用软件的缓冲区溢出漏洞。
堆溢出比较复杂,系统管理堆采用的是一个双向链表结构。堆中的数据是先进先出,当堆发生溢出,主要是管理堆结构的一些关键指针数据被覆盖了。
软件安全漏洞
软件的bug被利用来对用户造成恶意攻击,如给用户计算机安装木马,或直接盗取用户计算机上的秘密信息等。这时候就可以称之为软件的安全漏洞。
软件漏洞分类
1缓冲区溢出漏洞
最容易发生,原理是由于软件在处理用户数据时使用了不限边界的拷贝,导致程序内部的关键数据被覆盖,引发的安全问题。
缓冲区指的是OS中用来保存临时数据的空间,一般分为堆和栈。
利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。
当前web和OS中,50%以上的攻击都来自于这个漏洞。而缓冲区溢出中岁危险的是栈溢出,因为入侵者可以利用栈溢出,在函数返回时改变返回程序的地址,让其转移到任意地址,危害是使程序崩溃导致拒绝服务或者是跳转并且执行一段恶意代码,比如得到shell,然后恣意妄为。
下面主要讲解一下栈溢出。
栈溢出的最直接危害是过量放进内存空间的数据会将函数的返回地址覆盖。“返回地址”指的是,程序调用函数时,CPU首先将执行完这个函数后将要执行的指令地址存储到栈空间中,然后CPU执行函数,执行完毕后,CPU取出保存的指令地址,然后接着执行。栈是一个先进后出(LIFO)的结构,而堆是一个先进先出(FIFO)的结构。返回地址保存在栈中,而程序一般定义的空间也在栈中,这就导致有了覆盖返回地址的机会。
这个覆盖值可以使故意输入的值,这样就能完全控制把什么数值覆盖到程序的返回地址上,如果将一段恶意代码预先放入内存中的某个地址,再将这个地址覆盖到程序的返回地址上,这样程序一旦溢出后返回,就会跳到目的代码上去执行。(ShellCode和OllyICE会在后面介绍)
因此,可以用不同长度的数据来测试软件,从而判断多长的数据能成功覆盖程序的返回地址。一旦发现刚好覆盖了,就马上替换这4个字节数据为jmp esp或者call esp指令的地址,然后加上ShellCode,在次提交给软件,即可成功的利用软件的缓冲区溢出漏洞。
堆溢出比较复杂,系统管理堆采用的是一个双向链表结构。堆中的数据是先进先出,当堆发生溢出,主要是管理堆结构的一些关键指针数据被覆盖了。
相关文章推荐
- 软件漏洞发觉与防范的学习(二)
- 加密软件漏洞引发的学习
- 内核漏洞的利用与防范_学习
- Web常见安全漏洞原理及防范-学习笔记
- 内核漏洞的利用与防范_学习
- <漏洞战争软件漏洞分析精要> 学习笔记
- 【软件安全测试艺术—学习】漏洞是怎样隐藏到软件中去的?
- 因Java漏洞,Facebook遭受恶意软件攻击
- 软件测试学习:测试覆盖率工具EclEmma安装与使用
- ubuntu 为rabbitmq安装web插件管理界面(为了远程查看rabbitmq) 分类: 软件插件学习 2014-03-05 13:42 1411人阅读 评论(0) 收藏
- Joel说软件--漏洞抽象定律(摘要)
- 听听资深软件测试经理的学习历程
- 软件漏洞分析:crack小实验
- web常见漏洞及防范方法
- 软件测试(第2版)_Paul学习01——简介
- 学习两年软件开发后的第一次回首
- 从Open Web SSO 学习软件架构设计
- 生物信息常用软件学习
- 关于XML文件解析的学习软件PULL解析方法
- CCF计算机软件能力认证试题练习-数位之和(Java参考答案学习记录)