网络安全实验教程【1.6】

本文详细介绍了整型溢出的三种类型:宽度溢出、符号溢出和运算溢出,以及UAF类型的缓冲区溢出原理。重点讲解了栈溢出的利用,包括覆盖返回地址、覆盖函数或对象指针以及覆盖SEH链表的三种方法,并以Windows XP SP3环境下的实验为例,演示了栈溢出的过程,使用OllyDbg调试器进行分析。
摘要由CSDN通过智能技术生成

2.整型溢出原理
在数学概念中,整数指的是没有小数部分的实数变量;而在计算机中,整数包括长整型、整型和短整型,其中每一类又分为有符号和无符号两种类型。如果程序没有正确的处理整型数的表达范围、符号或者运算结果时,就会发生整型溢出问题,这一般又分为三种类型。
        ( 1)宽度溢出。由于整型数都有一个固定的长度,存储其的最大值是固定的,如果该整型变量尝试存储一个大于这个最大值的数,将会导致高位被截断,引起整型宽度溢出。
        ( 2)符号溢出。有符号数和无符号数在存储的时候是没有区别的,如果程序没有正确地处理有符号数和无符号数之间的关系,比如将有符号数当做无符号数对待,或者将无符号数当做有符号数对待时,就会导致程序理解错误,引起整型符号溢出问题。
        ( 3)运算溢出。整型数在运算过程中常常发生进位,如果程序忽略了进位,就会导致运算结果不正确,引起整型运算溢出问题。整型溢出是一种难以杜绝的漏洞形式,其大量存在于软件中。要防范该溢出问题除了注意正确编程外,还可以借助代码审核工具来发现问题。另外整型溢出本身并不会带来危害,只有当错误的结果被用到了如字符串复制、内存复制等操作中才会导致严重的栈溢出等问题,因此也可以从防范栈溢出、堆溢出的角度进行防御。
3. UAF 类型缓冲区溢出原理
UAF 类型缓冲区溢出是目前较为常见的漏洞形式,它指的是由于程序逻辑错误,将已释放的内存当做未释放的内存使用而导致的问题,多存在于 Internet Explorer 等使用了脚本解释器的浏览器软件中,因为在脚本运行过程中内部逻辑复杂,容易在对象的引用计数等方面产生错误,导致使用已释放的对象。

4.2.2 缓冲区溢出的利用

        缓冲区溢出会造成程序崩溃,但要达到执行任意代码的目的,还需要做到如下两点:一是在程序的地址空间里安排适当的代码,这些代码可以完成攻击者所需的功能;二是控制程序跳转到第一步安排的代码去执行,从而完成指定的功能。
1)在程序的地址空间里安排适当的代码
在程序的地址空间里安排适当的代码包括植入法和利用已经存在的代码两种方法。
( 1)植入法:一般是向被攻

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BinaryStarXin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值