(11)调用门提权(有参)
https://blog.csdn.net/Kwansy/article/details/108844441
上一篇博客介绍了调用门提权的无参版本,本节介绍有参版本的实现。
构造调用门描述符时,要设置 Param Count 字段,比如说要传进3个参数, 描述符可以设置为:
????EC03 0008????
,其中问号部分是要跳转的函数地址,如果这里有疑问请看上一篇博客。
下图是我在windbg内存窗口中观察得出的结论:
参数要手动push,裸函数内打印了3个参数,完整代码如下:
// 调用门提权.cpp : Defines the entry point for the console application.
//#include "stdafx.h"
#include <windows.h>
#include <stdio.h>int x,y,z;// 该函数通过 CALL FAR 调用,使用调用门提权,拥有0环权限
void __declspec(naked) FunctionHas0CPL()
{__asm{ pushadpushfd// pushad 和 pushfd 使ESP减小了 0x24 个字节// 原ESP+8就是参数1,+C就是参数2,+10就是参数3,详见堆栈图// 如果这里还有疑问,可以在windbg的内存窗口中观察mov eax,[esp+0x24+0x8+0x8] // 参数3mov dword ptr ds:[x],eaxmov eax,[esp+0x24+0x8+0x4] // 参数2mov dword ptr ds:[y],eaxmov eax,[esp+0x24+0x8+0x0] // 参数1mov dword ptr ds:[z],eaxpopfdpopadretf 0xC // 注意堆栈平衡,写错蓝屏}
}int main(int argc, char* argv[])
{char buff[6] = {0,0,0,0,0x48,0};__asm{push 0x3push 0x2push 0x1call fword ptr [buff] // 长调用,使用调用门提权} printf("%x %x %x\n",x,y,z);getchar();return 0;
}
修改调用门描述符,(根据裸函数的地址修改):
执行结果如下:
(11)调用门提权(有参)相关推荐
- (10)调用门提权(无参数)
一.实验步骤 本节实验的目标是自己实现调用门提权,在低地址空间中执行代码访问高2G的内存.实验步骤如下: 查看GDT表内容,8003f008是系统代码段,8003f018是用户代码段. 为了使用调用门 ...
- iOS冰与火之歌(番外篇) - 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权
0x00 序 这段时间最火的漏洞当属阿联酋的人权活动人士被apt攻击所使用的iOS PEGASUS(又称Trident三叉戟)0day漏洞了.为了修复该漏洞,苹果专门发布了一个iOS 9.3.5版本. ...
- 段、GDT、调用门学习笔记
保护模式 什么是保护模式 x86 CPU的3个模式:实模式.保护模式.虚拟8086模式. AMD64与Intel64 AMD在1999年的时候拓展了这套指令集,成为x86-64后改名叫AMD64,AM ...
- Windows保护模式学习笔记(三)—— 长调用/短调用/调用门
Windows保护模式学习笔记(三)-- 长调用/短调用/调用门 要点回顾 长调用与短调用 一.短调用 二.长调用(跨段不提权) 三.长调用(跨段并提权) 长调用执行时: 执行返回(RETF)时: 总 ...
- Windows保护模式(三)长调用与短调用调用门
长调用与短调用 短调用 指令格式 CALL 立即数 / 寄存器 / 内存 堆栈变化 发生改变的寄存器 ESP EIP 长调用(跨段不提权) 指令格式 CALL CS:EIP(如果是通过调用门则 EIP ...
- 保护模式(四)长调用与短调用 调用门
Windows保护模式学习笔记(三)-- 长调用/短调用/调用门 前言 要点回顾 长调用与短调用 一.短调用 二.长调用(跨段不提权) 三.长调用(跨段并提权) 长调用执行时: 执行返回(RETF)时 ...
- (12)调用门阶段测试
1.构造一个调用门,实现3环读取高2G内存 2.在第一题的基础上进行修改,实现通过fq的方式返回到其他地址 3.在第一题的基础上进行修改,在门中再建一个门跳转到其他地址 要求:代码正常执行不蓝屏 1. ...
- linux 负数_linux内核提权系列教程(2):任意地址读写到提权的4种方法
一.漏洞代码分析 代码见arbitrary.h. 1.功能函数介绍 功能 输入结构名 输入结构 功能 ARBITRARY_RW_INIT init_args size 初始化全局对象,存于g_mem_ ...
- 【渗透测试】Lin.Security靶机渗透练习_虚拟机无法获取ip的配置方法+靶机多种提权方式练习
靶机描述:在in.security,我们希望开发一个Linux虚拟机,该虚拟机在编写本文时基于最新的Ubuntu发行版(18.04 LTS),但存在许多漏洞,这些漏洞使用户无法升级扎根在盒子上.旨在帮 ...
最新文章
- 26QTimer定时器的使用
- 简述Python的Numpy,SciPy和Pandas,Matplotlib的区别
- 1.2 进阶-对称的二叉树
- [渝粤教育] 西南科技大学 线性代数 在线考试复习资料
- Vue实践--v-model实现简易计算器
- 字符串转数字函数 atol、atoll和strtol、strtoll、strtoul、strtoull 分析
- chrome去除蓝色边框和黄色背景色
- iOS开发罗盘/指南针
- 生活常用的塑料材质1到7
- 运维工程师的日常工作内容
- stm32复位引脚NRST
- 天猫,淘宝,京东收货信息中,自动识别手机号、姓名、省市区
- QGIS插件python开发环境配置和PyCharm配置调试环境
- 在windows上搭建React Native开发环境
- 基于手持技术的中学化学实验教学研究
- 武大计算机科学与技术弘毅学堂,武汉大学研究生精品课-百余新学子体验“弘毅学堂”...
- 【12月21日】A股滚动市盈率PE历史新低排名
- 科研有方 ——科研准备和科研步骤
- b站pink老师JavaScript的jQuery 案例代码——新浪下拉菜单
- ADS 如何切换不同PDK之间的版图?
热门文章
- oracle 临时表存在哪里_openGauss魔改PG?它能兼容Oracle的数据库表吗?
- 成功解决CatBoostError: Invalid type for cat_feature cat_features must be integer or string, real number
- 成功解决TypeError: object of type ‘int‘ has no len()
- CV:计算机视觉技术之图像基础知识—以python的cv2库来了解计算机视觉图像基础
- ML之PLiR之LARS:利用LARS算法求解ElasticNet回归类型问题(实数值评分预测)
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Button展示图片事件)
- auto-sklearn简介
- 项目管理十大知识领域之项目进度管理
- 使用visualvm远程监控LINUX服务器JVM
- java 泛型小小的测试题