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)调用门提权(有参)相关推荐

  1. (10)调用门提权(无参数)

    一.实验步骤 本节实验的目标是自己实现调用门提权,在低地址空间中执行代码访问高2G的内存.实验步骤如下: 查看GDT表内容,8003f008是系统代码段,8003f018是用户代码段. 为了使用调用门 ...

  2. iOS冰与火之歌(番外篇) - 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权

    0x00 序 这段时间最火的漏洞当属阿联酋的人权活动人士被apt攻击所使用的iOS PEGASUS(又称Trident三叉戟)0day漏洞了.为了修复该漏洞,苹果专门发布了一个iOS 9.3.5版本. ...

  3. 段、GDT、调用门学习笔记

    保护模式 什么是保护模式 x86 CPU的3个模式:实模式.保护模式.虚拟8086模式. AMD64与Intel64 AMD在1999年的时候拓展了这套指令集,成为x86-64后改名叫AMD64,AM ...

  4. Windows保护模式学习笔记(三)—— 长调用/短调用/调用门

    Windows保护模式学习笔记(三)-- 长调用/短调用/调用门 要点回顾 长调用与短调用 一.短调用 二.长调用(跨段不提权) 三.长调用(跨段并提权) 长调用执行时: 执行返回(RETF)时: 总 ...

  5. Windows保护模式(三)长调用与短调用调用门

    长调用与短调用 短调用 指令格式 CALL 立即数 / 寄存器 / 内存 堆栈变化 发生改变的寄存器 ESP EIP 长调用(跨段不提权) 指令格式 CALL CS:EIP(如果是通过调用门则 EIP ...

  6. 保护模式(四)长调用与短调用 调用门

    Windows保护模式学习笔记(三)-- 长调用/短调用/调用门 前言 要点回顾 长调用与短调用 一.短调用 二.长调用(跨段不提权) 三.长调用(跨段并提权) 长调用执行时: 执行返回(RETF)时 ...

  7. (12)调用门阶段测试

    1.构造一个调用门,实现3环读取高2G内存 2.在第一题的基础上进行修改,实现通过fq的方式返回到其他地址 3.在第一题的基础上进行修改,在门中再建一个门跳转到其他地址 要求:代码正常执行不蓝屏 1. ...

  8. linux 负数_linux内核提权系列教程(2):任意地址读写到提权的4种方法

    一.漏洞代码分析 代码见arbitrary.h. 1.功能函数介绍 功能 输入结构名 输入结构 功能 ARBITRARY_RW_INIT init_args size 初始化全局对象,存于g_mem_ ...

  9. 【渗透测试】Lin.Security靶机渗透练习_虚拟机无法获取ip的配置方法+靶机多种提权方式练习

    靶机描述:在in.security,我们希望开发一个Linux虚拟机,该虚拟机在编写本文时基于最新的Ubuntu发行版(18.04 LTS),但存在许多漏洞,这些漏洞使用户无法升级扎根在盒子上.旨在帮 ...

最新文章

  1. 26QTimer定时器的使用
  2. 简述Python的Numpy,SciPy和Pandas,Matplotlib的区别
  3. 1.2 进阶-对称的二叉树
  4. [渝粤教育] 西南科技大学 线性代数 在线考试复习资料
  5. Vue实践--v-model实现简易计算器
  6. 字符串转数字函数 atol、atoll和strtol、strtoll、strtoul、strtoull 分析
  7. chrome去除蓝色边框和黄色背景色
  8. iOS开发罗盘/指南针
  9. 生活常用的塑料材质1到7
  10. 运维工程师的日常工作内容
  11. stm32复位引脚NRST
  12. 天猫,淘宝,京东收货信息中,自动识别手机号、姓名、省市区
  13. QGIS插件python开发环境配置和PyCharm配置调试环境
  14. 在windows上搭建React Native开发环境
  15. 基于手持技术的中学化学实验教学研究
  16. 武大计算机科学与技术弘毅学堂,武汉大学研究生精品课-百余新学子体验“弘毅学堂”...
  17. 【12月21日】A股滚动市盈率PE历史新低排名
  18. 科研有方 ——科研准备和科研步骤
  19. b站pink老师JavaScript的jQuery 案例代码——新浪下拉菜单
  20. ADS 如何切换不同PDK之间的版图?

热门文章

  1. oracle 临时表存在哪里_openGauss魔改PG?它能兼容Oracle的数据库表吗?
  2. 成功解决CatBoostError: Invalid type for cat_feature cat_features must be integer or string, real number
  3. 成功解决TypeError: object of type ‘int‘ has no len()
  4. CV:计算机视觉技术之图像基础知识—以python的cv2库来了解计算机视觉图像基础
  5. ML之PLiR之LARS:利用LARS算法求解ElasticNet回归类型问题(实数值评分预测)
  6. Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Button展示图片事件)
  7. auto-sklearn简介
  8. 项目管理十大知识领域之项目进度管理
  9. 使用visualvm远程监控LINUX服务器JVM
  10. java 泛型小小的测试题