初探栈溢出(下)

news2024/11/17 11:53:52

0x04 漏洞利用

作为脚本小子,先跑一下写好了的exploit脚本。

打开HackSysEVDExploit.sln文件,直接在vs2019上编译即可。

将生成的HackSysEVDExploit.exe拷贝至win7,执行如下命令

直接可以获取system权限。

那么只跑一下脚本肯定不行,一起分析一下他是如何做到的。

首先,栈溢出了,我们最希望控制的就是EIP,通过栈溢出的漏洞将原来函数返回的地址覆盖为我们自己希望执行代码的地址。那么应该弄清楚一点,返回地址在哪?

可以在ida上找到答案,通过stack窗口可以看到TriggerBufferOverflowStack的堆栈图:

我们可以通过kernelBuffer溢出来覆盖r的值,r相对KernelBuffer的偏移为820h。

所以我们可以申请一块0x824大小的空间,然后将我们要执行函数或者shellcode的地址填入0x820的位置,即可覆盖返回地址。

TriggerBufferOverflowStack执行结束后就会执行我们自己的代码。

这里有一个小问题需要注意,执行完我们自己的代码以后我们需要让程序能够继续正常执行,那么需要做平衡堆栈的动作

最终我们自己编写的exp为:

payload解读

其中TokenStealingPayloadWin7为payload函数。

在ring3,fs:[0]指向TEB,在ring0,fs:[0]指向KPCR。

然后通过KPCR+124h获取CurrentThread,CurrentThread结构体为EThread,EThread的第一个成员KThread+40为APC_STATE结构,其中包含当前线程的“养父母”进程。

EPROCESS+0xb8指向的是一个链表,串着所有进程的信息,我们可以通过遍历这个链表获取pid为4(EPROCESS+0xb4),system进程的EPROCESS信息。

最后将当前进程的token(EPROCESS+0xf8)的值替换为system进程的token的值,让当前进程权限为system。达到权限提升的作用。

最后需要平衡堆栈,以及将返回后的两句代码添上。

其余代码

将相对kernelBuffer偏移0x820字节返回位置进行覆盖,改为我们自己函数的地址。

创建设备与驱动通信

IoControlCode要为2236419才会执行BufferOverflowStackIoctlHandler,这一点我们前面也已经分析过了。

由于当前进程具有system令牌,我们通过当前进程创建的cmd.exe拥有system权限。

最后执行我们自己的exp,成功弹出system权限的cmd。

0x05 修复

Size改为sizeof(KernelBuffer),达到一个限制大小的作用,这一点在SECURE(安全的代码)代码中也有体现。

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

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

相关文章

多模态图像配准中的跨模态注意

Cross-modal attention for multi-modal image registration 多模态图像配准中的跨模态注意背景贡献实验方法Feature extractionCross-modal attentionRigid registrationRigid registration implementation details 损失函数Thinking 多模态图像配准中的跨模态注意 Medical I…

现代雷达车载应用——第2章 汽车雷达系统原理 2.6节 雷达设计考虑

经典著作,值得一读,英文原版下载链接【免费】ModernRadarforAutomotiveApplications资源-CSDN文库。 2.6 雷达设计考虑 上述部分给出了汽车雷达基本原理的简要概述。在雷达系统的设计中,有几个方面是必不可少的,它们决定了雷达系…

springboot 集成 redis luttuce redisson ,单机 集群模式(根据不同环境读取不同环境的配置)

luttuce 和redisson配置过程中实际上是独立的&#xff0c;他们两个可以同时集成&#xff0c;但是没有直接相关关系&#xff0c;配置相对独立。 所以分为Lettuce 和 Redisson 两套配置 父pom <!-- Spring Data Redis --><dependency><groupId>org.springframe…

02markdown-学习笔记

一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 换行符<br>标签 写入一段测试用的正文第二段测试文本,如果要对文本进行换行可以使用<br>标签 文本修饰符 字体为斜体的修饰&#xff0c;一对星号包含 字符为粗体&#xff0c;两对星号包含 字体为…

详细了解stm32---按键

提示&#xff1a;永远支持知识文档免费开源&#xff0c;喜欢的朋友们&#xff0c;点个关注吧&#xff01;蟹蟹&#xff01; 目录 一、了解按键 二、stm32f103按键分析 三、按键应用 一、了解按键 同学们&#xff0c;又见面了o(*&#xffe3;▽&#xffe3;*)ブ&#xff0c;最…

我在代码随想录|写代码之203. 移除链表元素,707. 设计链表,206. 反转链表

​第一题 ​​ 203. 移除链表元素 题目: 思路分析: 我们要删除节点说白了就是将节点移除,将要删除的节点的前一个的next域移动到要删除节点的next域,我们可以这样写当我们运到我们要删除节点然后件他删除,那么怎么删除?我们可以直接让我们要删除的元素找不到。如果我们直接将…

如何在Centos 7环境下安装MySQL并登录

目录 先获取MySQL官方yum源 然后正常使用yum命令下载mysql即可完成MySQL的下载 使用mysql客户端登录mysqld服务端 能够登录mysql客户端后&#xff0c;我们最后还需要做一点配置 先获取MySQL官方yum源&#xff08;包括对yum源的介绍&#xff09; 介绍一下yum源 yum源就是一…

k8s如何部署seata(分布式事务)?(第一篇)

k8s如何部署seata(分布式事务)&#xff1f; 官方传送门https://seata.io/zh-cn/ 快速入门SEATA Seata 是一款开源的分布式事务解决方案&#xff0c;致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式&#xff0c;为用户打造一站…

RMQ算法总结

知识概览 RMQ又叫ST表、跳表&#xff0c;可以用来解决区间最值问题&#xff0c;这里这有查询没有修改。当然&#xff0c;这样的问题用线段树也是可以解决的。RMQ算法本质上是倍增动态规划&#xff0c;它的思想是先倍增预处理再查询。f(i, j)表示从i开始&#xff0c;长度是的区…

TableAgent:让数据分析变得轻松简单,导师再也不用担心我的数据分析能力啦!

TableAgent——导师再也不用担心我的数据分析能力啦 1. TableAgent介绍1.1 TableAgent——数据分析智能体1.2 背后强大的技术支持 2. TableAgent注册3. TableAgent使用3.1 入门级使用3.2 魔鬼级使用 4. 对比使用5. 总结 1. TableAgent介绍 1.1 TableAgent——数据分析智能体 …

PostgreSQL向量数据插件--pgvector安装(附PostgreSQL安装)

PostgreSQL向量数据插件--pgvector安装 一、版本二、数据库安装1. 在官网下载PostgreSQL14.0的安装包2.增加用户postgres3.解压安装 三、pgvector安装1. 从github上克隆下来2. 安装pgvector插件3. 开始使用pgvector启用pgsql命令行创建扩展 本文为本人在安装pgvector中踩过的坑…

Postgresql在Windows中使用pg_dump实现数据库(指定表)的导出与导入

场景 Windows中通过bat定时执行命令和mysqldump实现数据库备份&#xff1a; Windows中通过bat定时执行命令和mysqldump实现数据库备份_mysqldump bat-CSDN博客 Windows上通过bat实现不同数据库之间同步部分表的部分字段数据&#xff1a; Windows上通过bat实现不同数据库之间…

Java EE 多线程之线程安全的集合类

文章目录 1. 多线程环境使用 ArrayList1. 1 Collections.synchronizedList(new ArrayList)1.2 CopyOnWriteArrayList 2. 多线程环境使用队列2.1 ArrayBlockingQueue2.2 LinkedBlockingQueue2.3 PriorityBlockingQueue2.4 TransferQueue 3. 多线程环境使用哈希表3.1 Hashtable3.…

Spring深入学习

1 Bean创建的生命周期 Spring bean是Spring运行时管理的对象。Spring Bean的生命周期指的是Bean从创建到初始化再到销毁的过程&#xff0c;这个过程由IOC容器管理。 IOC即控制反转&#xff0c;是面向对象编程中的一种设计原则&#xff0c;通过依赖注入&#xff08;DI&#xf…

TrustZone之中断及中断处理

一、中断 接下来,我们将查看系统中的中断,如下图所示: 通用中断控制器(GIC)支持TrustZone。每个中断源,在GIC规范中称为INTID,分配到以下三个组之一: • Group0:安全中断,以FIQ方式发出信号 • 安全Group1:安全中断,以IRQ或FIQ方式发出信号 • 非安全Gr…

SuperMap iManager 11i(2023) SP1新特性汇总

作者&#xff1a;ls 【目录】 &#xff08;一&#xff09;GIS云套件支持发布聚合服务&#xff08;二&#xff09;GIS云套件支持自定义/修改服务接口信息&#xff08;三&#xff09;GIS云套件管理界面支持批量修改镜像&#xff08;四&#xff09;GIS云套件管理界面可调整服务节点…

iA Writer for Mac:释放创作力的专业MarkDown写作软件

iA Writer for Mac是一款专业的MarkDown写作软件&#xff0c;为Mac用户提供了简洁、高效的写作环境。无论您是一名专业写作人员、学生或博主&#xff0c;iA Writer都能帮助您以最简单的方式将想法转化为文字。 首先&#xff0c;iA Writer的界面非常简洁&#xff0c;只展示您正…

MATLAB 系统辨识 + PID 自动调参

MATLAB 系统辨识 PID 自动调参 Matlab R2021b下载安装详细教程Chapter1 MATLAB 系统辨识 PID 自动调参1. 导入数据2. 系统辨识3. PID 自动调参 Chapter2 MATLAB系统辨识Chapter3 【MATLAB】使用系统辨识工具箱(System Identification)建模Chapter4 matlab系统辨识工具箱及其反…

网络服务IP属地发生变化的原因有哪些?

近期&#xff0c;许多用户发现自己的网络服务IP属地发生了变化。原本固定的IP地址不再是静态的&#xff0c;而是发生了变动。这一现象引起了广大用户的关注和疑惑&#xff0c;对网络服务的使用和信息安全产生了影响。为了解决用户的疑虑&#xff0c;我们对此现象进行了深入探究…

云仓酒庄带您品法国葡萄酒

说起葡萄酒肯定绕不开法国&#xff0c;法国葡萄酒闻名中外&#xff0c;口碑卓越。作为世界上的产酒大国&#xff0c;可以说是每一寸土地都可以种植葡萄。云仓酒庄的品牌雷盛红酒分享这么优秀的一个葡萄酒产酒国有哪些特点呢&#xff1f; 1.产区特色&#xff1a;波国有最著名的…