溢出入门

溢出入门

溢出入门

混淆数据和代码的界限,让系统错误地把数据当作代码去执行。

下面讨论的都是在内存中发生的。

缓冲区溢出分为栈溢出和堆溢出。

产生的根本原因是,没有在内存中严格区分数据和指令,外部输入的数据成为指令代码。

程序缺乏对缓冲区边界条件的检查。

1,栈溢出。last in first out (LIFO)
栈,客栈,数据暂时存放的地方。先进后出,像一个广口的瓶子,放白色方糖。

将一段内存当作栈,汇编指令:入栈push、出栈pop。在cpu里通过ss寄存器sp段寄存器指明栈顶位置。

2,堆,是程序运行时动态分配分内存。

从原理出发

1,手工实践原理——》然后开发可利用的模块(模块化)——》成功

2,直接利用模块——》排除意外错误——》成功

缓冲区溢出工具metepreter