初探栈溢出(下)

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.mfbz.cn/a/249357.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Rust开发环境搭建

Rust开发环境搭建 前言 我刷知乎,b站都有推的,最近无聊刚好学下这个全宇宙最完美的变成语言 官网 https://www.rust-lang.org/ Rust工具链安装 Mac,linux curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh开发环境搭建 有钱&#x…

MAC如何判断是型号x64、ARM64

文章目录 前言如何操作解决办法: [MAC 知识](https://blog.csdn.net/qq_40374604/category_11129661.html) 前言 自从 MAC M1 出来后,MAC 分为英特尔芯片和苹果自家的芯片,导致很多软件安装也要区分版本。 比如,微信开发者工具 …

0001.WIN7(64位)安装ADS1.2出现L6218错误

用了十多年的笔记本电脑系统出现问题,硬件升级重装以后安装ADS1.2。在编译代码的时候出现L6218错误。如下: 图片是从网上找的,我编译出错的界面没有保留下来。 首先,代码本身没有任何问题 ,代码在win7(32位)下编译没有…

Photoshop插件3D Map Generator Geo的使用记录1(版本说明、安装卸载使用和高程数据生成3D地形图的准备工作)

3D Map Generator是一款强大的地图创建和定制化工具,具有以下特点和功能: 快速创建3D地图:用户可以通过该工具快速创建出高质量的3D地图,而无需具备专业的GIS或PS技能。支持多种图层类型:3D Map Generator支持多种图层…

数据标注公司如何确保数据安全?景联文科技多维度提供保障

数据标注公司通常拥有大量的AI数据和用户数据,保护数据安全是数据标注公司的重要任务。 数据标注公司确保标注数据的安全可以从制度、人员、工具等多个方面入手,建立完善的安全管理体系和审计机制,加强应急预案和备份机制的建立,以…

论文阅读——GroupViT

GroupViT: Semantic Segmentation Emerges from Text Supervision 一、思想 把Transformer层分为多个组阶段grouping stages,每个stage通过自注意力机制学习一组tokens,然后使用学习到的组tokens通过分组模块Grouping Block融合相似的图片tokens。通过这…

【SpringBoot】之Mybatis=Plus集成及使用(入门级)

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《SpringBoot开发之Mybatis-Plus系列》。&#x1…

git的安装及使用

git的安装及使用 git的安装 官网地址:https://git-scm.com/download/win 在任何位置输入bash或sh,进入git 设置用户名邮箱。 git config --global user.name “wfyfly” git config --global user.email 2423217861qq.com 查看配置信息 git config --list --globa…

gitlab下载,离线安装

目录 1.下载 2.安装 3.配置 4.启动 5.登录 参考: 1.下载 根据服务器操作系统版本,下载对应的RPM包。 gitlab官网: The DevSecOps Platform | GitLab rpm包官网下载地址: gitlab/gitlab-ce - Results in gitlab/gitlab-ce 国内镜像地…

[Application] The app delegate must implement the window property if ..... 错误

在xcode中新建ios项目后再真机上运行,会发现手机上一篇漆黑,仔细观察控制台会发现这样的提示: [Application] The app delegate must implement the window property if it wants to use a main storyboard. 大概意思是: app d…

WebGL+Three.js入门与实战——给画布换颜色、绘制一个点、三维坐标系

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

工业交换机的组网方式有哪些?

工业交换机也称作工业以太网交换机,即应用于工业控制领域的以太网交换机设备,由于采用的网络标准,其开放性好、应用广泛以及价格低廉、使用的是透明而统一的TCP/IP协议,以太网已经成为工业控制领域的主要通信标准。 工业交换机的…

解决goview栈内存溢出导致打包报错问题

最近搞低代码大屏使用goview打包时遇到问题 报错&#xff1a; vite v4.3.6 building for production... transforming (8931) node_modules\monaco-editor\esm\vs\base\common\navigator.js <--- Last few GCs ---> [24864:000001B515BA39F0] 65979 ms: Scavenge 2002.0…

Vue3-20-组件-父组件给子组件传值

情景说明 当父组件使用子组件的时候&#xff0c; 我们可能会需要将某些父组件的变量值 传递 给 子组件&#xff0c;在子组件中进行使用。此时就有一个 【父组件】传值给【子组件】的动作。 这就是本文我们要讨论的问题。主要问题有两个 &#xff1a; 1、【子组件】 如何接收值…

Android--UML类图使用详解

明敕星驰封宝剑&#xff0c;辞君一夜取楼兰 一&#xff0c;定义 类图(Class diagram)是显示了模型的静态结构&#xff0c;特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。它既用于应用程序的系统分…

Elasticsearch:相关性工作台 - BM25 及 ELSER 的相关性比较

我们知道 Elastics Learned Sparse EncoderR (ELSER) 可以被用来做语义搜索。它是一个 out-of-domain 的语义搜索模型。无需训练&#xff0c;我们就可以得到很好的相关性。有关 ELSER 的更多知识&#xff0c;请参考文章 “Elastic Learned Sparse Encoder 简介&#xff1a;Elas…

力扣题目学习笔记(OC + Swift) 12. 整数转罗马数字

12. 整数转罗马数字 罗马数字包含以下七种字符&#xff1a; I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如&#xff0c; 罗马数字 2 写做 II &#xff0c;即为两个并列的 1。12 写做 XI…

el-date-picker 选择一个或多个日期

el-date-picker可选择多个日期 type“dates” 加个s即可 <div><span>el-date-picker选择多个日期</span><el-date-pickertype"dates"v-model"dateList"placeholder"选择一个或多个日期"></el-date-picker></di…

【1.6计算机组成与体系结构】存储系统

目录 1.层次化存储结构2.Cache2.1 Cache的介绍2.2 局部性原理2.3 Cache应用 1.层次化存储结构 由 ⬆ CPU&#xff1a;寄存器。 快 ⬆ Cache&#xff1a;按内容存取(相联存储器)。 到 ⬆内存&#xff08;主存&#xff09;&#xff1a;DRAM。 慢 ⬆ 外存&#xff08;辅存&#…

2024年20多个最有创意的AI人工智能点子

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 探索 2024 年将打造的 20 个基于人工智能产品的盈利创意 &#x1f525;&#x1f525;&#x1f525; 直到最近&#xff0c;企业对人工智能还不感兴趣&#xff0c;但…