文章源自【字节脉搏社区】-字节脉搏实验室
作者-Jadore
栈:先进后出
动态调试下的栈:
几个寄存器:
EAX:函数执行完后的返回结果
ECX:计数器
EDX、EBX:计算器
ESP:指向栈顶的指针...fr=aladdin
缓冲区溢出(Buffer Overflow|Buffer Overrun):
由于程序设计时缺乏对缓冲区(Buffer)的边界进行检查而导致在向缓冲区写入超过其本身的数据时而引起的异常...产生缓冲区溢出的几种可能:
1.数组索引不在合法范围内
通常我们可能比较多地注意到数组的上界不应被超过,而往往却不太会在意数组的下界,来看到这个例子:
#include
int main...2','3','4','5','6','7','8',’\0’};
或者char array[11]={'0','1','2','3','4','5','6','7','8','9’};
这里看看相关的缓冲区溢出漏洞...:
首先构造含跳转地址的填充字符串jumper,初始化长度为70字节,内容为’A’–’Z’的随机字符串,从第5字节起填充4字节由初始化变量Ret定义的返回地址6,从第51字节起填充8字节的空指令和2字节的跳转指令