栈是一种后进先出的数据结构,用来维护函数调用过程中的函数内部变量,返回地址和函数的参数等相关信息(存储顺序按函数参数、返回地址、函数内部变量存储)。 函数调用时,stack frame(栈帧)首先入栈,同时,EIP寄存器跳转到调用函数的第一条指令。每个stack frame都包含有调用函数的内部变量和返回地址。函数调用完成后,stack frame出栈,同时EIP中存储函数的
利用缓冲区溢出漏洞,需要一段能生成缓冲区的代码,且这个缓冲区能被填入到易受攻击的程序中。这个缓冲区应当包括期望的shellcode,并且应该重写堆栈中的返回地址,以使shellcode能够执行。这意味着必须提前知道shellcode的实际地址,此外还必须重写堆栈中用来存储返回地址的4个字节。即使知道shellcode的正确地址,但重写返回地址不正确,程序也会崩溃,达不到缓冲区漏洞利用的效果。解决这
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号