当前位置: 首页 > news >正文

漏洞分析丨cve20110104

作者丨黑蛋

目标程序

调试工具

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再往后挪一下:

这次成功了:

相关文章:

漏洞分析丨cve20110104

作者丨黑蛋目标程序调试工具16进制编辑器XP SP3office 2003ollydbg010Editor三、漏洞验证首先我们配置环境,并下载poc:使用ollydbg附加office excel 2003:打开poc可以看到发生了访问违规异常,像地址0x51453844中写入时发生异常&am…...

关于vue-router路径配置的问题(此文主要是记录三级路由的访问路径,以及安装、路由组件、路由重定向)

一、路由的定义node路由:用户根据不同的url地址,来访问不同的页面vue路由(客户端):组件结合路由规则来构建单页面应用二、下载安装npm ——>终端输入npm i vue-router3 -S ——>回车 (3为版本的意思&…...

SpringBoot 整合 clickhouse和mysql 手把手教程全网最详细

最近做一个项目 需要 整合mysql clickhouse 多数据源 后台用的是ruoyi框架 1. 首先pom引入相关依赖 <!--JDBC-clickhouse数据库--><dependency><groupId>com.clickhouse</groupId><artifactId>clickhouse-jdbc</artifactId><version&…...

Leetcode-java 数据结构回顾 Day01

数据结构复习 虽说是复习&#xff0c;但是都差不多忘干净了。而且用c做题做的多。 借从Leetcode上做题的机会&#xff0c;记一记自己之前学过的java知识。 链表 数组好歹写个动态规划&#xff0c;还能对六七十个样例&#xff0c;链表是一点头绪都没&#xff0c;尤其是要写头…...

Java spring cloud 企业工程管理系统源码+项目模块功能清单

工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff1a;实现对数据字典标签的增删改查操作 2、编码管理&#xff1a;实现对系统编码的增删改查操作 3、用户管理&#xff1a;管理和查看用户角色 4、菜单管理&#xff1a;实现对系统菜单的增删改查操…...

用Biome-BGC模型如何模拟水循环过程

在Biome-BGC模型中&#xff0c;对于碳的生物量积累&#xff0c;采用光合酶促反应机理模型计算出每天的初级生产力(GPP)&#xff0c;将生长呼吸和维持呼吸减去后的产物分配给叶、枝条、干和根。生物体的碳每天都按一定比例以凋落方式进入凋落物碳库&#xff1b;对于水份输运过程…...

【目标检测论文解读复现NO.33】改进YOLOv5的新能源电池集流盘缺陷检测方法

前言此前出了目标改进算法专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读最新目标检测算法论文&#xff0c;…...

二进制转换之命理学习

什么是十神 运用儒家学说&#xff1a; 克我者官也&#xff1a;古代没有民主思想&#xff0c;官不是为民服务的&#xff0c;官就是克的。 对男命来说克我的是儿女&#xff0c;女儿是正官&#xff0c;儿子是偏官&#xff08;七杀&#xff09;克的厉害&#xff0c;对父亲来说有了…...

es6 常见规范

块级作用域 &#xff08;1&#xff09;let 取代 var ES6提出了两个新的声明变量的命令&#xff1a;let和const。其中&#xff0c;let完全可以取代var&#xff0c;因为两者语义相同&#xff0c;而且let没有副作用。 use strict;if (true) {let x hello; }for (let i 0; i &…...

大学计算机基础填空题

大学计算机填空题 1、 从计算机域名到 IP地址的翻译过程称为域名解析。 2、计算机各部件传递信息的通道称为总线英文是BUS。 3、 采用 ASCII 编码时每个字符占1个字节&#xff0c;最高为是0。 4、 电子计算机的特点有&#xff1a;速度快、精度高、存储容量大、具有逻辑判断能力…...

低代码开发平台是什么意思?低代码开发平台优势!

大多数企业都在寻求尽可能地改善客户体验。因此&#xff0c;企业和开发人员正在转向低代码开发平台&#xff0c;以在没有传统方法的情况下提供有针对性的应用程序。关键是尽可能消除手动编程过程。 低代码开发平台是什么意思&#xff1f; 低代码是开发应用程序的现代方式。它…...

CSAPP - Bomb Lab

介绍&#xff1a;http://csapp.cs.cmu.edu/3e/bomblab.pdf 工具&#xff1a;gdb gdb手册&#xff1a;http://csapp.cs.cmu.edu/2e/docs/gdbnotes-x86-64.pdf phase_1 反汇编phase_1函数。 (gdb) disas phase_1 Dump of assembler code for function phase_1:0x00000000004…...

Docker 常见操作及部署springboot、Shiro、SpringData脚手架(下)

1、查找jdk容器 docker search jdk 2、查看镜像 docker images 3、启动JDK镜像 docker run -di --namejdk1.8 clarinpl/java 4、查看镜像运行情况 docker ps 5、使用命令行进入容器 docker exec -it 48428f21b6ee /bin/bash 6、查看jdk版本 java -version 7、从宿主机复制…...

【前端学习】D3:CSS进阶

文章目录前言系列文章目录1 CSS的三大特性1.1 层叠性1.2 继承性1.3 优先级&#xff08;*&#xff09;2 盒子模型2.1 看透网页布局的本质2.2 盒子模型&#xff08;Box Model&#xff09;的组成2.3 边框&#xff08;border&#xff09;2.3.1 普通边框2.3.2 表格的细线边框2.3.3 边…...

中移杭研面试经历

文章目录 mysql 事务隔离级别mongo查询数据不到,但是导出来后有这条数据,为什么呢?排查过程cms 和 g1区别使用范围不一样STW的时间垃圾碎片垃圾回收的过程不一样CMS会产生浮动垃圾,G1没有浮动垃圾G1回收器的特点大对象的处理CMS的总结和优缺点cms 回收算法STW发生在哪些阶段…...

[CV学习笔记] yolotensorrt多线程推理-第一部分

1、前言 之前分享了利用FastDet&tensorrt多线程推理的代码&#xff0c;本想着继续学习yolo&tensorrt多线程的代码&#xff0c;但是现在shouxieai直接开源的该项目&#xff0c;而且还包含yolov8实例分割的代码。因此本文主要是对项目代码进行梳理&#xff0c;一方面加深…...

element ui 的滚动条,Element UI 文档中没有被提到的滚动条

element ui 的滚动条,Element UI 文档中被提到的滚动条 Element UI 官网中有用到自定义的滚动条组件&#xff0c;但是发布的所有版本中都不曾提及&#xff0c;个中原因我们不得而知&#xff0c;不过我们还是可以拿过来引用到自己的项目中。 使用的时候&#xff0c; 放在 <el…...

项目四:使用路由交换机构建园区网-任务三:配置路由交换机并进行通信测试

配置路由交换机并通信测试1、在RS-1上创建VLAN并配置Trunk接口2、测试通信结果3、配置RS-1的三层路由接口&#xff08;SVI&#xff09;1、在RS-1上创建VLAN并配置Trunk接口 进入系统视图&#xff0c;关闭信息中心&#xff0c;重命名为RS-1 system-view undo info-center enab…...

数据仓库面试题汇总

一、分析 1&#xff0e;什么是逻辑数据映射&#xff1f;它对 ETL 项目组的作用是什么&#xff1f; 逻辑数据映射&#xff08;Logical Data Map&#xff09;用来描述源系统的数据定义、目标数据仓库的模型以及 将源系统的数据转换到数据仓库中需要做操作和处理方式的说明文档&…...

【Redis】哨兵机制(三)

目录 3.Redis哨兵 3.1.哨兵原理 3.1.1.集群结构和作用 3.1.2.集群监控原理 3.1.3.集群故障恢复原理 3.1.4.小结 3.2.搭建哨兵集群 3.3.RedisTemplate 3.3.1.导入Demo工程 3.3.2.引入依赖 3.3.3.配置Redis地址 3.3.4.配置读写分离 3.Redis哨兵 Redis提供了哨兵&am…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者&#xff0c;高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法&#xff0c;分为两大系列&#xff1a; 一、getElementBy... 系列 传统方法&#xff0c;直接通过 DOM 接口访问&#xff0c;返回动态集合&#xff08;元素变化会实时更新&#xff09;。…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

Mysql故障排插与环境优化

前置知识点 最上层是一些客户端和连接服务&#xff0c;包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念&#xff0c;为通过安全认证接入的客户端提供线程。同样在该层上可…...