信息收集與系統攻擊之緩沖區溢出基本概念
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,原先的棧頂數據將不再屬于堆棧范圍之內,即相當于數據出棧了。
標簽:
緩沖區溢出