简单实现栈溢出实验(IDA)

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

有关栈溢出的相关知识

最近学校讲到了栈溢出,并有一道很基础的题,在此可以记录一下,感兴趣的人可以了解了解.
/
栈溢出:
/
首先谈到栈溢出,要先说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(
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

F1gh4

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值