- 5
- 0
- 约7.34千字
- 约 16页
- 2016-04-02 发布于湖北
- 举报
缓冲区溢出.doc
一、专题目标/任务概述
掌握缓冲区溢出的原理、缓冲区溢出漏洞的利用技巧,理解缓冲区溢出漏洞的防范措施;通过对一个包含缓冲区溢出的实例程序的分析来了解缓冲区溢出漏洞产生的基本原理和攻击方法。
二、实践环境与工具/平台
vc6.0
三、专题所涉及的基本原理
1、概念:
缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,使得溢出的数据覆盖在合法数据上
图1:Windows下程序在内存中的结构
(2)函数调用过程
堆栈(简称栈)是一种先进后出的数据表结构。栈有两种常用操作:压栈和出栈。栈有两个重要属性:栈顶和栈底。内存的栈区实际上指的是系统栈。系统栈由系统自动维护,用于实现高级语言的函数调用。
每个函数在被调用时都有属于自己的栈帧空间。当函数被调用时,系统会为这个函数开辟一个新的栈帧,并把它压入栈中,所以正在运行的函数总是在系统栈的栈顶。当函数返回时,系统栈会弹出该函数所对应的栈帧空间。
win32系统提供了两个特殊的寄存器来标识系统栈最顶端的栈帧。
ESP:扩展堆栈指针。该寄存器存放一个指针,它指向系统栈最顶端那个函数栈帧的栈顶。
EBP:扩展基指针。该寄存器存放一个指针,它指向系统栈最顶端那个函数栈帧的栈底。
另外,EIP寄存器(扩展指令指针)对于堆栈的操作非常重要,EIP包含将要被执行的吓一跳指令的地址。
函数栈帧:ESP和EBP之间的空间为当前栈帧,每一个函数都
原创力文档

文档评论(0)