陕西科技大学学报
文章编号
:
(
)
基于
Windows
操作系统的栈溢出攻击验证
周
蕊
,
于晓明
陕西科技大学理学院
陕西 西安
陕西科技大学电气与信息工程学院
陕西 西安
摘
要
:
目前大部分的缓冲区溢出的攻击都是基于摧毁栈的方式
作者针对
操作系
统
,
对栈溢出的原理进行了相关分析
,
并通过实例完成了一个溢出的攻击验证
实验结果表明
,
针对有漏洞的代码可以进行漏洞攻击
,
并给出了防止漏洞攻击的几点建议
关键词
:
栈
;
缓冲区溢出
;
漏洞攻击
;
网络安全
中图法分类号
:
文献标识码
:
0
引言
缓冲区溢出是目前导致
黑客
型病毒横行的主要原因
从红色代码到
再到日前爆发的
冲
击波
都是利用缓冲区溢出漏洞的典型
据
安全小组称
操作系统中超过
的安全漏洞都是由内存溢出引起的
其中大多数与微软技术有关
这些与内存溢出
相关的安全漏洞正在被越来越多的蠕虫病毒所利用
缓冲区溢出分为以下几种方式
覆盖数据为栈中的数据
称为栈溢出
如果溢出覆盖发生在堆中
则称
为堆溢出
发生在已初始化数据区的则称为已初始化数据区溢出
其中栈溢出比较简单
但是也是比较常
见的攻击方式
栈溢出是冯
诺依曼构架的一个缺陷
常见的操作系统如
都存在
这些漏洞
鉴于
操作系统的普及
本文主要针对
进行分析
1
栈溢出预备知识
栈是一种重要的数据结构
遵循
先进后出
的操作特性
在
系统中
完成这一功能的就
是寄存器
所有的
操作都通过它来完 成
因而 寄 存器
经
常变化
但是不能用寄存器
访问非栈顶的数据
为此
系统设置了另外一个寄存器
用它来保存一个稳定不变的基准地址
基址
然后通过
基址
正负偏移量
的
方式实现非栈顶的数据访问
可以把
看作是保存栈底的位置
那么寄存
和
一起就组成了一
个栈
下面的分析主要针对寄存器来进行
首先说明几个我们需要特别关注的
系统的
位寄
存器
指令地址寄存器
保存下一步将要执行的指令的地址
基址寄存器
保存当前函数层的栈内存基地址
依靠它来完成栈内存的变量寻址
栈顶指针寄存器
保存栈顶地址
指针
根据它来完成
操作
栈顶指针所指向的
位置是存储有效数据的
故
操作是先往低址移动栈顶指针
再存储数据
操作是先读取数据
再往高址移动栈顶指针
收稿日期
作者简介
周
蕊
女
讲师
在读硕士生
研究方向
网络安全与计算机应用