二进制漏洞:传统的缓冲区溢出、UAF(Use-After-Free)等涉及二进制编码的漏洞统称为二进制漏洞
根据缓冲区所处的不同内存空间以及分配方式的不同,缓冲区溢出可以分为栈溢出和堆溢出

栈溢出原理:

栈是一种基本的数据结构,是由编译器自动进行分配、释放的。栈遵循先进后出的规则,生长方向为从高向低生长,也就是地址由高到低
栈中存放的数据:对于要调用的子函数来说,存放子函数的参数、返回地址、局部变量等重要信息。函数可以通过栈来方便的对局部变量进行读取。
在调用一个子函数的时候,我们要做的工作有以下几步:
1:将参数push到栈上
2:将当前eip的值push到栈上进行保存,当作函数调用之后的返回地址
3:执行子函数的函数体

程序在调用子函数的时候,(可以通过OD等工具看汇编代码)会先将ebp压栈调整栈结构,之后会在栈上开辟一段空间,这段空间就是子函数的空间。在实际的函数调用过程中,我们的局部变量是不断变化的,而且需要注意的是 :栈是向低地址的方向生长的,但是局部变量是向高地址生长的

也就是说,变量是向下 “吞噬” 的,这样的话就会产生一个问题:当变量向下“吞噬”的时候,"一不小心"把下边ebp和eip的空间也”吞噬“了,会发生什么事情呢?这个时候就会产生我们说的栈溢出现象,我们知道eip的值是用来函数执行完之后返回用的,但是在被”吞吃“之后,显然栈空间的值已经发生改变,这个时候就会返回错误。这个时候我们也就控制了程序的EIP,可以为所欲为了。那么什么是造成栈溢出的主要原因呢?
代码编写过程的不规范,举个例子:在执行数据复制的操作的时候,不检查源数据的长度直接进行复制,很有可能会因为目的空间不够而导致这种情况的产生,如何避免这种情况呢?最简单的办法就是在执行前增加长度限制判断。

整型溢出漏洞
整形溢出漏洞主要是指在计算机中的数据类型问题导致的溢出漏洞,整型作为一种数据类型,不仅仅存在正负的问题还存在数据范围的问题甚至还包括不同整型数据之间的赋值和转换问题,而在这其中容易产生一系列不严谨的算法,可能会导致溢出漏洞的产生。
因此,综上所述,整型漏洞通常分为以下几种:
1:存储溢出漏洞
2:运算溢出漏洞
3:符号问题导致的漏洞

一:存储溢出漏洞
存储溢出相对比较简单易懂,就是由于使用不同的数据类型来存储整型数造成的。
举个例子:
下边这个代码段,在实际的赋值过程中:作者想要达到的目的可能是将a的值赋给b,但是在实际的输出过程中,我们可以看到,实际的输出结果并不是a的值,输出结果如下:

int a=0x10000;
short b=a;
printf("%d",b);

输出结果:

这是因为,不管哪一种数据类型都是由存储范围的限制的,int型是32位长度的,但是short是16位的数据长度,因此在进行赋值操作的时候,short型的数据没办法将int型数据的所有位数全盘接受,这样就会导致我们之前说的存储溢出漏洞。

二:运算溢出漏洞
相对于存储溢出来说,运算溢出相对来说更加容易理解,顾名思义,运算溢出就是在整型数据在运算过程中导致的溢出,我们都知道,数据类型的范围长度以及范围是有限的,当然基于这一点我们在定义数据类型的时候大多时候还是会谨慎的使用各类数据类型,防止超出数据类型的范围,但是需要注意的是,我们往往将注意力放在赋值以及定义一个变量的时候,但是在定义之后,对该数据的各类运算是不是会超出数据类型的范畴我们通常是不会给太多关注的,因为我们大多情况下关注的都是运算的结果。这样也就导致了,很多漏洞都是通过这类型的溢出导致的。

三:符号问题导致的漏洞
整型数据分为无符号整型数据和有符号整型数据,如果在编写程序代码的时候,忽略符号问题造成的影响,那么就极有可能造成安全事故。举个著名的例子:
Apache Web Server分块溢出漏洞

UAF漏洞
UAF漏洞全称Use-After-Free,字面意思,也就是说在释放之后使用。具体过程如下图解:

UAF漏洞是因为指针的使用不当造成的,在释放空间或指针之后,又重新被后续的函数调用,因此编写程序的时候为了避免这一漏洞的产生,需要在实际运用的过程中,对指针的有效性进行判断。

漏洞分析——二进制漏洞相关推荐

  1. 漏洞挖掘、漏洞分析和漏洞利用

    漏洞挖掘.漏洞分析和漏洞利用     利用漏洞进行***可以大致分为漏洞挖掘.漏洞分析.漏洞利用三个步骤.这三部分所用的技术有相同之处,比如都需要精通系统底层知识.逆向工程等:同时也有一定的差异. 1 ...

  2. 安卓拒绝服务漏洞分析及漏洞检测

    "超级拒绝服务漏洞"是一个安卓通用型拒绝服务漏洞,恶意***者可能利用此漏洞让手机中的任意应用崩溃无法正常工作,几乎影响目前市面上所有的安卓APP应用. 漏洞分析: 0xr0ot和 ...

  3. Struts2漏洞分析,漏洞波及全系版本

    Struts漏洞分析    Apache Struts团队已经发布了Struts 2.3.15.1安全更新版本.在Struts2.3.15.1版本之前,存在着严重的安全漏洞,如果现在一些比较大的网站是 ...

  4. 网络安全漏洞分析与漏洞复现

    前言 4月6日和5月18日,VMware官方发布的两则安全公告中显示,关乎旗下产品的CVE漏洞多达10个,其中不乏有CVSSv3评分9.8的高危漏洞!如此高频的出洞速率,吸引了笔者注意.笔者将对CVE ...

  5. iis+php解析漏洞修复,服务器解析漏洞分析和漏洞修复方法

    摘要:服务器​解析漏洞主要是一些特殊文件被Apache.IIS.Nginx等服务器的Web容器在某种情况下解释成脚本文件格式并得以执行而产生的漏洞.服务器解析漏洞算是历史比较悠久了,但如今依然广泛存在 ...

  6. 0day安全:软件漏洞分析技术(第2版)

    0day安全:软件漏洞分析技术(第2版) 基本信息 作者:王清   张东辉   周浩   王继刚   赵双 丛书名:安全技术大系 出版社:电子工业出版社 ISBN:9787121133961 上架时间 ...

  7. 0day安全:软件漏洞分析技术(第2版)pdf

    下载地址:网盘下载 内容简介  · · · · · · 本书分为4篇17章,系统全面地介绍了Windows平台缓冲区溢出漏洞的分析.检测与防护.第一篇为常用工具和基础知识的介绍:第二篇从攻击者的视角出 ...

  8. 漏洞分析丨HEVD-0x8.IntegerOverflow[win7x86]

    作者:selph 前言 窥探Ring0漏洞世界:整型溢出漏洞 本例中,整型溢出的问题出现在安全检验的地方,由于整型溢出导致错误的输入通过了安全检验,从而造成了栈溢出漏洞 所谓整型溢出,有两种,上溢出和 ...

  9. 网络靶场实战-RouterOS漏洞分析(CVE-2022-45315)

    本环境是蛇矛实验室基于"火天网演攻防演训靶场"进行搭建,通过火天网演中的环境构建模块,可以灵活的对目标网络进行设计和配置,并且可以快速进行场景搭建和复现验证工作.火天网演中,内置大 ...

最新文章

  1. Python基础知识(第四天)
  2. [每天进步一点 -- 流水账]第1周
  3. USB的八个问题和答案(转)
  4. 用Navicat管理MySQL数据库
  5. 在anaconda中为jupyter安装扩展插件
  6. 超级干货!服务端性能瓶颈定位思路总结
  7. css+js调整当前界面背景音量
  8. 030_《Delphi COM深入编程》
  9. DELL R720网卡驱动
  10. 关于绿色校园建设中综合能效平台的管理效益与研究
  11. 英语中与数字有关的表达方式
  12. ThinkPHP 提示验证码输入错误
  13. RC微分积分电路 RC滤波电路 RC脉冲分压器 RC耦合电路 good
  14. 2022年朝阳区科技创新课之“产品创新与成果转化”训练营活动圆满结束
  15. python学习笔记-修改pip下载源-创建虚拟环境
  16. 最熟悉的陌生人| 长文理解基因本体论 (Gene Ontology, GO)
  17. 【文末彩蛋】国产PLC通信实例
  18. 《2022年Java开发者生产力报告》出炉啦
  19. 快速查看电脑内存型号方法
  20. javascript(JS) 0基础快速入门 (二)(this指向问题)

热门文章

  1. Twig模板引擎常用基础用法总结
  2. 修改文章的软件-有没有自动修改文章的软件
  3. WKWebView禁止放大缩小(捏合手势)
  4. Tanzu Mission Controle 图文并茂
  5. Ulord区块链Android-armv7挖矿源代码
  6. Flutter 与 原生交互(Android),关于Android开发的面试经验总结
  7. 矩阵分解_满秩分解、三角分解、QR分解、奇异值分解
  8. 基于 SAP BTP 平台的 AI 项目经验分享
  9. Java程序员必备英文,你确定不看看?
  10. Java水果商店课程设计展望,JavaWeb课程作业之网上水果商店.zip