信息收集与系统攻击之缓冲区溢出基本概念
2018-03-26 20:36:52 | 来源:中培企业IT培训网
2.溢出攻击
1)缓冲区溢出基本概念
缓冲区:缓冲区也称堆栈,是一种抽象的数据结构,物理上就是一段连续分配的内存空间。堆( heap)和栈(stack)是不同的两个概念,堆是由程序申请并释放的内存空间,而栈是由操作系统自动分配的内存空间。堆栈有两个特点,一数据操作(压栈( push)和出栈( pop))遵循“后进先出”原则,就象往有底的竹筒里面放乒乓球,最后放进去的必须最先取出来。二是堆栈的增长方向与内存地址增长方向相反,也就是堆栈是从内存的高地址向低地址增长的。
指针:编程语言中的一个对象,是一个内存地址。
寄存器:有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。以X86 32位CPU为例,其通常包含8个通用寄存器和1个指令指针寄存器。8个通用寄存器分别是EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP和指令指针寄存器EIP。其中ESP和EBP被称为堆栈指针寄存器,在一个函数中,ESP和EBP共同决定了一个堆栈,其中ESP指向栈顶, EBP指向栈底。而指令指针寄存器(EIP)作为冯。诺依曼计算机体系结构的核心,其指向CPU要执行的下一条指令的地址。
在堆栈分配中,其是从高往底分配内存(注意:这和内存从低往高分配的方式截然相反),并且遵循“后进先出”的原则。堆栈涉及压栈( push)和出栈(pop)两种操作,堆栈的栈顶位置由寄存器ESP指定,压栈时,ESP=ESP-4,同时在ESP处存放需要压人堆栈的数据;出栈时,ESP=ESP+4,原先的栈顶数据将不再属于堆栈范围之内,即相当于数据出栈了。