一、实验步骤

本节实验的目标是自己实现调用门提权,在低地址空间中执行代码访问高2G的内存。实验步骤如下:

查看GDT表内容,8003f008是系统代码段,8003f018是用户代码段。

为了使用调用门提权,需要在GDT表中创建一个调用门描述符

该调用门描述符的段偏移字段指向我们定义的裸函数,提权后在该函数内执行权限就能变成0环。调用门描述符中的段选择子字段要设置成指向某个系统代码段,比如8003f008,则段选择子设置为00001000b = 0x08。DPL要设置成3,因为我们调用CALL FAR 时的CPL是3。P,DPL,S位设置成0xE,TYPE固定设置成0xC表示这是一个调用门。因为本实验测试无参调用,所以高4字节的低8位全设置成0.至此,调用门描述符除了Offset in Seg段偏移还没指定外,其他位已经全部确定。未确定的位暂定为0,调用门描述符的值是 0000EC00 00080000.

接下来,需要确定裸函数的地址,我们在VC6中编写函数,代码如下:

进入反汇编,查看裸函数的地址

将该地址填写到调用门段选择子中,0040EC00 00081020,至此,调用门段选择子构造完毕.

将段选择子写入到GDT表某个全为0(没有用)的位置,这里我选择的是8003f048。

回到程序,开始调试,注意观察CALL FAR前CS,SS,ESP的值

调用前,CS=1B,SS=23,ESP=12FF28
执行 CALL FAR 当执行到 INT 3 时,在windbg中断下,观察此时的寄存器

可以看到,CS=0x08,就是我们选择的系统代码段的段选择子;SS=0x10,和刚才在3环中看到的0x23不同,说明提权会导致堆栈切换;EIP=401020,说明确实跳转到了我们定义的裸函数内。

现在,打开windbg内存窗口,验证我们之前画的堆栈图是否正确。

[ESP]存储的0040d4a3就是 CALL FAR 调用处的地址;[ESP-4]是调用者CS也就是1B,没有问题;[ESP-8]应该是3环的ESP,[ESP-C]是0x23,是原来的SS,都没有问题,完全符合预期。

至此,我们成功地通过调用门,调用了我们定义的函数,接下来,我们要修改裸函数,让它执行一些访问高2G数据的操作,以证明裸函数内确实拥有0环权限。修改后代码如下:

// 调用门提权.cpp : Defines the entry point for the console application.
//#include "stdafx.h"
#include <windows.h>DWORD dwH2GValue; // 存储高2G的数据// 该函数通过 CALL FAR 调用,使用调用门提权,拥有0环权限
void __declspec(naked) FunctionHas0CPL()
{__asm{     mov eax,0x8003f008mov ebx,[eax]mov dwH2GValue,ebxretf}
}int main(int argc, char* argv[])
{char buff[6] = {0,0,0,0,0x48,0};__asm{call fword ptr [buff] // 长调用,使用调用门提权}    printf("%08x\n",dwH2GValue);getchar();return 0;
}

如果函数地址发生变化,注意更新调用门描述符

执行程序,可以看到,我们成功读取了GDT表第二项的低4字节。

至此,调用门提权(无参)实验成功。

二、提权后通用寄存器有没有发生变化?

通过实验得知,没有变化,0环和3环的寄存器数据是一样的。

(10)调用门提权(无参数)相关推荐

  1. (11)调用门提权(有参)

    https://blog.csdn.net/Kwansy/article/details/108844441 上一篇博客介绍了调用门提权的无参版本,本节介绍有参版本的实现. 构造调用门描述符时,要设置 ...

  2. Kali Linux渗透测试--windows 10入侵和提权过程

    在进行入侵检测之前,配置好网络环境,使其相互连通,才能进行入侵.在使用Metasploit成功入侵之后拿到的只是一个基础的shell,要想拿到系统级别的shell,添加系统用户,获取用户登录口令,还需 ...

  3. 【Qt】调用Python函数:无参数、单个参数、多个参数、数组参数

    一.链接配置 如果缺少头文件需要安装python3-dev: sudo apt-get install python3-dev 链接libpython3.4库,添加头文件路径,以Qt为例: INCLU ...

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

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

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

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

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

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

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

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

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

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

  9. Linux常用提权方法 (゚益゚メ) 渗透测试

    文章目录 简介 常用命令汇总 靶机环境 Linux提权方法 Linux提权漏洞利用 脏牛(Dirty COW)CVE-2016-5195漏洞 CVE-2019-7304漏洞 CVE-2019-1327 ...

最新文章

  1. c mysql 时间段查询_mySql 时间段查询
  2. matlab的grayscale,Python 是否等效于Matlab函数“imfill”的grayscale??
  3. python kivy ios_Kivy跨平台技术开发iOS
  4. GEOLayers3 for Mac - 世界地图任意位置路径展示ae动画
  5. 诗与远方:无题(十五)
  6. jquery动态改变div宽度和高度
  7. mysql 5.1.x 比较 5.6.x版本的日志
  8. 在Linux上安装Mysql 以及 涉及问题
  9. hibernate......1、2级缓存
  10. U3D关于message的使用
  11. 变邻域搜索算法(Variable Neighborhood Search,VNS)
  12. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_16_常用的函数式接口_Function接口中的方法Apply...
  13. 企业IT治理样板间首次直播,教您如何打造高效可控的云环境
  14. 【数据结构】栈的基本操作
  15. 计算机老师一句话,40句感恩教师的一句话
  16. phpstudy修改mysql账户名_phpstudy怎么更改用户名
  17. 腾讯云服务器2003系统,腾讯云服务器windows2003系统续用的说明
  18. 电脑消除,彻底清除电脑垃圾,让电脑运行更流畅!
  19. AMD zen3 5600X + B550M 黑苹果 EFI Big Sur 11.5.2
  20. 实战02-selenium模拟QQ邮箱登录并批量爬取指定邮件的附件——体验版

热门文章

  1. 成功解决eric6 Create Dialog Code XXX.py exists but does not contain any classes
  2. 成功解决ModuleNotFoundError: No module named ‘sklearn.grid_search‘
  3. Interview:算法岗位面试—2019秋招校园招聘—算法工程师【机器学习、深度学习(偏图像)】秋招感悟:初期阶段的傲娇→中期阶段的紧张→后期阶段的蜕变
  4. Algorithm:C++语言实现之队列相关算法(最短路径条数问题、拓扑排序)
  5. Python的IDE:利用MyEclipse2017软件的PyDev插件实现Python编程
  6. ML之回归预测:利用八(9-1)种机器学习算法对无人驾驶汽车参数(2017年的data,18+2)进行回归预测值VS真实值
  7. Hacker:编写高级语言脚本可破解各个云盘的下载速度限制
  8. ML之ME/LF:机器学习中的模型评估指标/损失函数(连续型/离散型)的简介、损失函数/代价函数/目标函数之间区别、案例应用之详细攻略
  9. VM之Linux:Linux的Ubuntu中,解决安装后屏幕太小的问题
  10. OS_CORE.C(9)