有关栈溢出的相关知识
最近学校讲到了栈溢出,并有一道很基础的题,在此可以记录一下,感兴趣的人可以了解了解.
/
栈溢出:
/
首先谈到栈溢出,要先说windows系统典型漏洞分析。
/
栈溢出也是其中的一种。
/
要了解栈溢出,要先了解:
1.主角:栈 与 栈帧
栈(音:zhan四声)是一种特殊的线性计算机内部存储结构,服从先进后出的一种特殊线性结构,如同弹夹里的子弹,先放入的子弹,在最下面。栈的结构使其只能在栈的顶端进行增加数据和删除数据的操作,压入数据称为(push),弹出数据称为(pop).
/
2.内存结构
在win32环境下,由高级语言生成的可执行文件,即PE文件,(Portable Executable)文件。在运行可执行文件时,系统会将其加载到内存,并映射出4GB的虚拟存储空间,然后继续运行,形成所谓的进程空间。(教材原话)
/
在win32中将进程使用的内存按功能可以分为4个区域,如下图:
/
| 名称 | 作用 | |
|---|---|---|
| 栈区(stack) | 用于动态存储函数之间的调用关系 | 低地址 |
| 堆区 | 该内存区域由进程利用相关函数和运算符动态申请 | |
| 代码区 | 存放程序汇编之后的机械代码和只读程序,计算机运行程序,会在该区域读取命令并执行。 | |
| 数据区 | 用于存储全局变量和静态变量 | 高地址 |
/
其在计算机内存中的结构也如下图:
| 栈区 | ↑栈增长方向 |
| 堆区 | ↓堆增长方向 |
| 代码区 | |
| 数据区 |
代码实现
/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void attack(

本文介绍了一种典型的Windows系统漏洞——栈溢出,并通过一个简单的C语言程序演示了如何利用IDA进行栈溢出攻击,详细解释了攻击过程及原理。


被折叠的 条评论
为什么被折叠?



