缓冲区溢出

原理:
通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,造成程序崩溃或使程序转而执行其它指令,以达到攻击的目的。造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。

攻击者在通过超长的数据包发送覆盖了程序buffer的关键返回ret位置,导致CPU控制流的劫持,错误地把攻击者数据当作代码来执行

详细说明:
缓冲区是程序运行时计算机内存中的一个连续的块,它保存了给定类型的数据.问题随着动态分配变量而出现.为了不用太多的内存,一个有动态分配变量的程序在程序运行时才决定给他们分配多少内存.如果程序在动态分配缓冲区放入太多的数据会有什么现象?它溢出了,漏到了别的地方.一个缓冲区溢出应用程序使用这个溢出的数据将汇编语言代码放到计算机的内存中,通常是产生root权限的地方.单单的缓冲区溢出,并不会产生安全问题.只有将溢出送到能够以root权限运行命令的区域才行.这样,一个缓冲区利用程序将能运行的指令放在了有root权限的内存中,从而一旦运行这些指令,就是以root权限控制了计算机.
总结一下上面的描述.缓冲区溢出指的是一种系统攻击的手段,通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的.据统计,通过缓冲区溢出进行的攻击占所有系统攻击总数的80%以上.

危害:
缓冲区溢出攻击,可以导致程序运行失败、系统关机、重新启动,或者执行攻击者的指令,比如非法提升权限,等操纵程序的内存中的内容。

解决:
代码->通过实现安全编码实践,解决安全问题的应用程序在开发和测试来预防。

另外,也可详细查看相关blog:http://www.cnblogs.com/fanzhidongyzby/archive/2013/08/10/3250405.html
试了下,没看懂 =。=

还有:http://www.freebuf.com/articles/system/40107.html

时间: 2024-11-06 12:10:59

缓冲区溢出的相关文章

堆栈 Cookie 检测代码检测到基于堆栈的缓冲区溢出

 报错:0x000CC3C9 处有未经处理的异常(在 image_opencv2.exe 中):  堆栈 Cookie 检测代码检测到基于堆栈的缓冲区溢出. 主要检查代码中有没有对数组的越界操作,就解决了这个bug. 其它的相关知识查后再补充.

关于对抗缓冲区溢出攻击

缓冲区溢出说白了就是因为内存中的非法访问而导致的一些状态的破坏. 这一点,C语言中的一些和数组有关的库函数最容易导致这类情况. 缓冲区溢出攻击,有很大一部分是通过数据的溢出,内存的非法访问来执行一些攻击代码,因为数据在栈中一旦溢出,那么他就会覆盖一些重要的状态,从而被攻击者操控. 那么关于对抗缓冲区溢出的攻击,有这样的几种方法 1.栈的随机化 在植入缓冲区溢出攻击的代码的时候,还要植入指向这段代码的指针,指针指向这段代码的栈的位置.因为执行这段代码是考指针进行跳转过去的.由于以前的操作系统程序的

kali实战-缓冲区溢出

我们之前可能都了解过自动化的程序,学习自动化程序的使用方法,但是在计算机领域有一个词语叫做"零日漏洞",这样的漏洞是如何发现的呢?有些漏洞通过远程就可以控制你的计算机,安装木马,达到这样的目的,他们是如何通过远程控制你的系统的呢?今天我们学习此类攻击中最主要一种:缓冲区溢出,通过缓冲区溢出我们就可以控制目标机器.基于本章的内容从原理上我们已经具备这样的方法可以自己去发现"零日漏洞",发现的原理和方法将在本章注意展开讲解. 加Q群交流kali Q群:108186516

缓冲区溢出笔记

首先得会内存.寄存器还有程序运行的规则. 存储知识: 文件地址(File Offset):数据在PE文件中的地址,文件在磁盘上存放时相对于文件开头的偏移: 虚拟内存地址:每个进程都有的4G虚拟空间: 物理内存地址: 这三个地址要层层映射 内存: 代码区:存放二进制代码 数据区:存储全局变量 堆区:动态内存空间(还没太明白用途) 栈区:存放函数调用关系(缓冲区溢出就在这里发生) 重点研究栈的结构: 栈帧:每个函数有自己的栈帧,只有被调用的函数才会在系统栈开辟栈帧,调用完毕将弹出栈帧 两个寄存器(用

缓冲区溢出漏洞实验 20125108 冯相国

练习1 一.实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写. 二.实验准备 系统用户名shiyanlou,密码shiyanlou 实验楼提供的是64位Ubuntu linux,而本次实验为了方便观察汇编语句,我们需要在32位环境下作操作,因此实验之前需要做一些准备. 此过程消耗了不少时间,学校的网速实在太渣. 三.实验步骤

实验一——缓冲区溢出漏洞实验

Linux实验一 —— 缓冲区溢出漏洞实验 20122137 一.实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写. 二.实验准备 系统用户名shiyanlou,密码shiyanlou 实验楼提供的是64位Ubuntu linux,而本次实验为了方便观察汇编语句,我们需要在32位环境下作操作,因此实验之前需要做一些准备. 1.

缓冲区溢出漏洞实验

一.实验过程及截图 输入命令安装一些用于编译32位C程序的东西: 进入32位linux环境.此时你会发现,命令行用起来没那么爽了,比如不能tab补全了,所以输入“/bin/bash”使用bash.使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址,这使得猜测准确的内存地址变得十分困难,而猜测内存地址是缓冲区溢出攻击的关键. 把以下代码保存为“stack.c”文件,保存到 /tmp 目录下. 把以下代码保存为“exploit.c”文件,保存到 /tmp 目录下. 结果: 上面的代码

实验一缓冲区溢出漏洞实验

一.实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写 二.实验准备 系统用户名shiyanlou,密码shiyanlou 实验楼提供的是64位Ubuntu linux,而本次实验为了方便观察汇编语句,我们需要在32位环境下作操作,因此实验之前需要做一些准备. 1.输入命令安装一些用于编译32位C程序的东西: sudo apt-

缓冲区溢出基础知识

缓冲区理论学习PE文件(进程)装入内存:PE文件(进程)在内存中按照功能大致划分4个部分(1)代码区(程序段) .text 主要存储被装入执行的二进制代码,ALU会到这个取指令并执行,这个段通常是只读,对它的写操作是非法的.(2)数据区 .data 主要是存储的全局变量,主要存储静态数据.(3)堆区 程序在堆区可以动态的请求分配一定大小的内存,并在用完后归还给堆区,动态分配和回收是堆区的主要特点,主要存储动态数据.(4)栈区 用于动态的存储函数之间的调用关系,以保证被调用函数在返回时恢复到母函数

缓冲区溢出漏洞实战(1)

目标软件:BlazeDVD Pro 版本号:7.0.0.0 系统:Windows xp,Win7,Win8 ------ 主要是Immunity Debugger mona.py插件的使用,此插件是Corelan Team的精品.设置mona.py工作路径: !mona config -set workingfolder c:\logs\%p 生成测试数据: #!/usr/bin/python from struct import pack   buffer = '\x41'*1000 try: