首页 > 其他分享 >软件漏洞

软件漏洞

时间:2024-10-06 21:21:53浏览次数:7  
标签:返回 函数 前栈 调用函数 漏洞 地址 软件 栈帧

缓冲区溢出

漏洞标准化研究

  1. 公共漏洞和暴露CVE
    字典表,为广泛认同/已经暴露的漏洞给出公共名称以及相应修补信息。
  2. 通用缺陷枚举CME
    包括类缺陷、基础缺陷和变种缺陷,有字典、开发和研究三种视图。字典把所有缺陷按字母表顺序排列以供查阅;开发以软件开发周期为参照进行分类;研究从内在性质等方面进行分类。

典型漏洞类型

栈溢出

  1. 栈和栈帧
    程序运行时在内存中会有一块连续区域,从内存地址高到低一次是栈、堆、数据段、代码段。
    1)栈:由编译器自动分配释放,存放临时创建的局部变量和参数等。先进后出,便于保存/恢复函数调用现场。每个进程对应一个栈空间,进程中每个函数独占一个栈帧。
    2)堆:位于BSS内存段上面,由程序员分配释放,程序结束时操作系统统一回收。大小不固定,可以动态扩张和缩减。
    3)数据段:包括已初始化的数据段(.data)和未初始化的数据段(.bss),在编译时分配。
    4)代码段:存放由处理器直接执行的二进制代码和只读数据,可执行指令就是从这里取得的。一般标记为只读,任何对该区的写错误都会产生段错误。
  2. 程序和栈
    1)随着函数调用层数增加,函数栈帧向低地址方向延伸。随着各层调用函数返回,栈帧一块块被遗弃,向高地址方向回缩。
    2)两个相关寄存器:SP是栈顶指针,随数据出入栈变化。BP是栈底指针,标识一个相对稳定位置,BP加偏移地址可以引用参数和局部变量。
    3)每个栈帧包含4个部分:前栈帧ebp、临时局部变量、函数参数、返回地址。
  3. 函数调用机制
    1)调用函数把被调用函数的参数按照与形参顺序相反的顺序压入栈中。
    2)使用call指令调用被调函数。call完成压入返回地址(返回地址是call的下一条指令的地址)和调转到被调用函数的入口。
    3)转入被调用函数,先压入调用者函数的ebp,然后进行栈帧切换(把调用者函数的栈顶切换成被调用函数的栈底)。
    4)此时esp和ebp指向相同位置,然后开始压入被调函数的局部变量和临时变量,各个变量按照定义的顺序入栈。
  4. 函数调用返回机制
    1)降低栈顶,收回当前函数分配的存储局部变量和临时变量的存储空间。
    2)恢复保存的前栈帧栈底地址。
    3)被调用函数执行完毕,执行retn指令,返回调用者函数继续执行。
  5. 栈溢出
    由于栈从高到低依次是函数变量、前栈帧ebp和前栈帧中的返回地址,所以如果变量大小超过了给变量分配的存储空间,就会覆盖位于低地址的前栈帧ebp和前栈帧中的返回地址。所以如果精心设置用于覆盖返回地址的值,就可以通过给变量赋值来控制程序跳转到其他代码空间执行,即利用栈溢出实现控制流劫持。

标签:返回,函数,前栈,调用函数,漏洞,地址,软件,栈帧
From: https://www.cnblogs.com/ww0809/p/18447995

相关文章

  • Autosar EcuM配置-初始化及下电执行函数-基于ETAS软件
    文章目录前言EcuMCommonConfigurationEcuMDriverInitListOneEcuMModuleIDEcuMModuleParameterEcuMModuleServiceEcuMRbDriverInitCoreIdEcuMDriverInitListZeroEcuMGeneralEcuMRbOnGoOffOneCalloutEcuMRbCalloutFunctionEcuMRbModuleIDEcuMRb......
  • 【GT240X】【06】Linux文本编辑软件vim
    目录一、说明二、什么是vim?三、vi/vim的使用3.1命令模式3.2输入模式3.3底线命令模式四、vi/vim按键说明4.1 一般模式可用的光标移动、复制粘贴、搜索替换等4.2 一般模式切换到编辑模式的可用的按钮说明4.3一般模式切换到指令行模式的可用的按钮说明一......
  • 《软件需求管理 用例方法》读后感
    《软件需求管理用例方法》是一本深入探讨软件需求管理的经典之作。作者系统性地介绍了用例方法在软件需求获取、分析、规格化以及变更管理等方面的应用。我对书中强调用例模型的实用性以及如何有效地利用用例来捕捉用户需求的方法深感启发。特别是,书中对于用例图、用例规约和场景......
  • 13-网络安全漏洞防护技术原理与应用
    13.1概述1)概念网络安全漏洞又称为脆弱性,简称漏洞。漏洞一般是致使网络信息系统安全策略相冲突的缺陷,这种缺陷通常称为安全隐患。安全漏洞的影响主要有机密性受损、完整性破坏、可用性降低、抗抵赖性缺失、可控制性下降、真实性不保等。根据漏洞的补丁状况,可将漏洞分为普通漏......
  • 软件工程师课程辅导
    Day1环境搭建下载vscode下载链接:https://pan.baidu.com/s/1Oo1TIrAKmlEuEfdn9EXgLQ?pwd=nkt9配置vscode的python开发环境教程:https://www.runoob.com/python3/python-vscode-setup.html安装Pycharm下载教程:https://blog.csdn.net/qq_44809707/article/details/1......
  • 图片无损放大编辑PhotoZoom Pro 9.0.2多版本软件安装包下载含安装教程
    PhotoZoomPro9.0.2多版本软件是一款非常流行的图像放大软件,它可以让你将低分辨率的图像放大到高分辨率的尺寸,同时保持高质量的图像细节和清晰度。PhotoZoomPro9.0.2多版本软件采用了一种称为S-Spline技术的算法,这是一种能够保持图像细节的高级插值算法。它可以将原始图像分成小......
  • 如何给易语言软件加网络验证 永久免费的网络验证 文心云验证
    当我们自己幸幸苦苦编写了一个软件,又不想泛滥时,我们应该如何给软件添加一个授权呢我这边找了很久找到了一个方法 就是对接网络验证实现授权才能登录文心云验证是可以为开发的软件增加收费授权的功能,让作者开发的软件可以进行销售、充值、登陆等操作,并且提供防破验证功能,可以......
  • 谷歌:过渡到 Rust 使得 Android 漏洞大幅下降
    谷歌:过渡到Rust使得Android漏洞大幅下降来源:OSCHINA编辑: 白开水不加糖2024-09-2810:54:58 6谷歌在最新的一篇文章中指出,内存安全问题导致的漏洞百分比与新代码使用的开发语言密切相关。而随着其将开发转向内存安全语言,Android内存安全漏洞的百分比已经......
  • 中间件漏洞
    中间件漏洞常见的web中间件iisapachetomcatnginxjbossWeblogicWebSphereIIS6x篇1.1PUT漏洞1.漏洞描述IISServer在Web服务扩展中开启了WebDAV,配置了可以写入的权限,造成任意文件上传。版本:IIS6.02.漏洞复现1)开启WebDAV和写权限3.漏洞复现过程1)直接抓包......
  • 论软件体系结构的演化
    论软件体系结构演化1.1.演化原则1.1.1.演化成本控制原则演化成本控制(EvlutionCostControl,ECC)原则:演化成本要控制在预期范围内,也就是演化成本要明显小于重新开发成本。用途:用于控制架构演化成本是否在可控范围内,以及用户是否可接受。质量方案:CoE<<CoRD1.1.2.进度可控......