Windows保护模式学习笔记(七)—— PDEPTE

Windows保护模式学习笔记(七)—— PDE&PTE

    • Cr3
      • PDE(页目录表项)
      • PTE(页表项)
      • 物理页的属性
      • 10-10-12分页的补充
    • 实验1:证明PTE的特征1
      • 第一步:选择一个进程的Cr3
      • 第二步:查看页表
    • 实验2:通过修改页表使C语言能在0地址处读写
      • 第一步:得到一个变量的地址
      • 第二步:挂载PTE为0的物理页
      • 第三步:继续运行程序
    • 实验3:通过修改物理页属性使字符串常量可修改
      • 第一步:运行程序
      • 第二步:修改对应PTE的属性
      • 第三步:继续运行程序
    • 实验4:通过修改物理页属性使普通用户读取高2G内存
      • 第一步:运行如下代码
      • 第二步:修改PDE与PTE的U/S位
      • 第三步:继续运行程序

Cr3

描述:

在所有的寄存器中,只有Cr3存储的是物理地址,其它寄存器存的都是线性地址
Cr3所存储的物理地址指向了一个页目录表(PDT)
在Windows中,一个页的大小通常为4KB,即一个页可以存储1024个页目录表项(PDE)

物理页结构图:
物理页结构图

PDE(页目录表项)

描述:

页目录表(PDT)的每一项元素称为页目录表项(PDE)
每个页目录表项指向一个页表(PTT)
每个页表的大小为4KB,即一个页表可以存储1024个页表项(PTE)

PTE(页表项)

描述:

页表(PTT)的每一个元素称为页表项(PTE)
页表项(PTE)所指向的才是真正的物理页

特征:

  1. PTE可以指向一个物理页,也可以不指向物理页
  2. 多个PTE可以指向同一个物理页
  3. 一个PTE只能指向一个物理页

物理页的属性

物理页的属性=PDE属性& PTE属性
PDE属性
PTE属性
P位:是否有效位
注意:当PDE或PTE中有一个的属性P=0时,物理页就是无效的

R/W位:读写位
R/W=0:只读
R/W=1:可读可写

U/S位:权限位
U/S=0:特权用户
U/S=1:普通用户

PS位PDE特有
PS == PageSize
PS=1:PDE直接指向物理页,低22位=页内偏移,偏移最大值为4MB,俗称"大页"
PS=0:PDE指向PTE

A位:访问位
A=1:该PDE/PTE被访问过
A=0:该PDE/PTE未被访问过

D位:脏位
D=1:该PDE/PTE被写过
D=0:该PDE/PTE未被写过

注:其他位等学完控制寄存器与TLB才能讲,本篇不讲

10-10-12分页的补充

为什么要按10-10-12分页:

  1. 一个物理页的大小为4096字节,即2的12次方,若要遍历整个物理页,则需要12个比特位
  2. 一个页表有1024个页表项,1024等于2的十次方,即需要10个比特位
  3. 页目录表项同理,也需要10个比特位

注:以下实验的分页方式都为10-10-12分页

实验1:证明PTE的特征1

第一步:选择一个进程的Cr3

我这里启动了一个记事本:notepad.exe
记事本Cr3

第二步:查看页表

查看当线性地址为0时,进程的页表
线性地址0的页表
可以发现有许多页表项都为0,没有指向任何物理页

实验2:通过修改页表使C语言能在0地址处读写

第一步:得到一个变量的地址

运行代码如下:

#include <stdio.h>
#include <windows.h>int main(int argc, char *argv[])
{int x = 1;printf("x的地址:%x\n", &x);getchar();// 向0地址写入数据*(int*)0 = 123;// 从0地址读出数据printf("0地址的数据:", *(int*)0);getchar();return 0;
}

程序运行后,首先会输出x的地址
x的地址

第二步:挂载PTE为0的物理页

使用WinDbg将虚拟机中断,将变量x所在的物理页挂载到线性地址0的PTE
挂载物理页

第三步:继续运行程序

运行结果:
运行结果
成功对0地址进行了读写,实验成功!

实验3:通过修改物理页属性使字符串常量可修改

第一步:运行程序

代码如下:

#include <stdio.h>
#include <windows.h>int main(int argc, char *argv[])
{char *str = "Hello World";printf("线性地址:%x", str);getchar();						// 让程序执行到这里//修改只读变量str[0] = 'M';printf("修改后的值:%s\n",str);return 0;
}

这时候得到了str的地址:
str的地址

第二步:修改对应PTE的属性

修改PTE属性

第三步:继续运行程序

运行结果:
运行结果
修改成功!

实验4:通过修改物理页属性使普通用户读取高2G内存

第一步:运行如下代码

#include <stdio.h>
#include <windows.h>int main(int argc, char *argv[])
{PDWORD p = (PDWORD)0x8003F00C;getchar();			// 让程序运行到这里printf("读取高2G内存:%x \n", *p);return 0;
}

第二步:修改PDE与PTE的U/S位

修改U/S位

第三步:继续运行程序

运行结果如下:
运行结果
成功读取了高2G的内存!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PTE学习作业

##被攻击者服务器为Linux&#xff1a;加粗样式 1.基础题目之SQL注入 所谓SQL注入&#xff0c;就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串&#xff0c;最终达到欺骗服务器执行恶意的SQL命令。 通过SQL注入漏洞读取/tmp/360/key文件,答案就在文件中。 …

cisp-pte真题解答

0x00 实例1 sql注入 poc&#xff1a;http://192.168.222.135:1081/vulnerabilities/fu1.php?id-1%) ununionion select 1,load_file(/tmp/key),3,4,5,6,7--知识点&#xff1a;1.双写绕过 2.load_file 读取文件内容 0x02 文件上传 知识点&#xff1a; 1.文件内容大小写绕过&a…

pte-文件上传总结

这里写目录标题 文件上传一1126文件上传二 1127文件上传二 1128文件上传1129文件上传总结文件上传一1126 找个gif,删除部分中间内容,改成txt文件,添加 <?php @eval($_POST[123]);?> Content-Type的值是application/octet-stream, 上传文件时,Content-Type的值改im…

PTE考试写作教程

PTE考试写作教程 由经验丰富的母语教师完成准备教程&#xff0c;以在 PTE 考试的写作部分取得成功 课程英文名&#xff1a;PTE Academic Exam Preparation Writing Mastery (Achieve 79) 此视频教程共10.0小时&#xff0c;中英双语字幕&#xff0c;画质清晰无水印&#xff0…

PTE靶机攻略之Windows

26题 这是一道关于Windows权限提升的考题&#xff0c;目标机的IP地址:172.16.12.101&#xff0c;目标的端口范围在27000-28000之间&#xff0c;请利用扫描工具找到开放的端口&#xff0c;开始你的渗透之旅&#xff0c;进入网站后台&#xff0c;请填入key1的值&#xff1a; 解…

CISP-PTE真题演示

周末帮好兄弟做PTE的真题&#xff0c;觉得确实挺有意思的&#xff0c;于是就有了这篇文章&#xff0c;侵删侵删哈 第一阶段 基础题目一&#xff1a;SQL注入 所谓SQL注入&#xff0c;就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串&#xff0c;最终达到…

CISP-PTE实操练习讲解

CISP-PTE实操练习讲解 文章目录 CISP-PTE实操练习讲解前言一、文件上传二、反序列化漏洞三.失效的访问控制总结 前言 这次给大家讲解一下考试的各个题型 一、文件上传 这道题就很简单&#xff0c;上传一个木马进行蚁剑连接就可以了 答案就在key.php文件中 我们创建一个文件…

CISP-PTE考证相关知识

PTE考试介绍&#xff1a; ①考试时长&#xff1a;4个小时 ②考试方式&#xff1a;线下考试&#xff0c;通过本机连接在线考试平台 ③试卷分值&#xff1a;满分100分&#xff0c;70分及其以上为通过考试 ④试题分布&#xff1a;20道选择题&#xff0c;每道1分计20分&#xff1b;…

什么是CISP-PTE?

那我就简单的写几点给你介绍一下什么是CISP-PTE。上目录&#xff01; 1.认证机构 中国信息安全测评中心英文名简称&#xff1a;CNITSEC。是经中央批准成立的国家信息安全权威测评机构&#xff0c;职能是开展信息安全漏洞分析和风险评估工作&#xff0c;对信息技术产品、信息系…

CISP-PTE靶场搭建

环境 靶场下载&#xff1a;https://pan.baidu.com/s/1jZbXATH3BtT4d2MLhB3gcQ?pwdrdhw 提取码: rdhw 虚拟机版本&#xff1a;VirtualBox 6.1.34 r150636&#xff08;Qt5.6.2&#xff09; 靶场操作系统&#xff1a;Centos 6 64位 搭建过程 以管理员模式打开VBox新建并设置虚拟…

CISP-PTE考试介绍

注册信息安全专业人员-渗透测试工程师&#xff0c;英文为 Certified Information Security Professional - Penetration Test Engineer &#xff0c;简称 CISP-PTE。证书持有人员主要从事信息安全技术领域网站渗透测试工作&#xff0c;具有规划测试方案、 编写项目测试计划、编…

pte 文件包含

pte 文件包含 文件包含实验1文件包含实验2文件包含实验3文件包含实验1 http://*****/vulnerabilities/fu1.php?file=php://filter/read=convert.base64-encode/resource=../key.php文件包含实验2

19-PDE-PTE

不知在《分页》文章里&#xff0c;你有没有搞懂什么是页&#xff0c;同时还延伸出了页表的概念。另外&#xff0c;还解释了逻辑地址、线性地址和物理地址之间的关系。我知道你脑子可能是一团浆糊&#xff0c;这只能怪我的语言表达能力还不够强。 大段大段的文字让人读起来有时…

华为面试汇总

4个16位类型表示一个64位数据类型 比如用4个16位int可以表示一个64位的float&#xff0c;类型的前两个int表示整数部分后两个int表示小数部分&#xff0c;然后自己重载实现运算函数。 希尔排序与基数排序 了解各自的原理即可 希尔排序(Shell’s Sort)是插入排序的一种又称“缩…

教你如何拿到华为offer!华为面试流程及面试题解析

华为的招聘流程一直非常复杂,本人最近参加了华为的社招,对全部流程有一个总体了解,包括流程,面试题目类型,分享给大家,希望大家能有所帮助。 首先是华为hr审核简历,看一个简历和所需职位的匹配度,基本就是看毕业学校,看掌握技能是否与所需职位吻合,然后会有一个电话沟…

华为初面 + 综合面试,附上面试题,share 给大家~

华为面试整体流程大致分为笔试&#xff0c;性格测试&#xff0c;面试&#xff0c;综合面试&#xff0c;回学校等结果。笔试来说&#xff0c;华为的难度较中等&#xff0c;选择题难度和网易腾讯差不多。最后的代码题&#xff0c;相比下来就简单很多&#xff0c;一共 3 道题目&am…

华为社招面试笔试

1.机试题 机试有两道题&#xff0c;一道题200分&#xff0c;120分及格。 题目一&#xff1a;给你一个正整数n&#xff0c;假设有两个质数加起来等于n,问一共有多少组这样的质数&#xff1f; 题目二&#xff1a;字符串匹配&#xff0c;给你一个父串&#xff0c;一个子串&…

华为软件测试面试题 | 一位华为入职成功者的分享【笔试题】

B站软件测试面试题及面试技巧和简历辅导地址&#xff1a;B站最牛软件测试简历编写和软件测试简历模板以及面试技巧&#xff08;结尾有惊喜&#xff09; 一、判断题 1&#xff0e;软件测试的目的是尽可能多的找出软件的缺陷。&#xff08;&#xff09; 2&#xff0e;Beta 测试…

来自各大面经的一股清流 腾讯三面+华为三面【面试经验分享篇】

希望大家都被温柔以待&#xff0c;在这个兵荒马乱的战役中拿到自己满意的offer~ 一、背景信息 我是985硕&#xff0c;文科跨专业&#xff0c;本科期间辅修会计&#xff0c;通过两门CPA。 因为害怕自己申不上四大&#xff08;主要很怕群面&#xff09;&#xff0c;所以报了某机…

php对接百度网盘开发平台API开发高级实战案例解析:(环境部署、php封装类、Access Token获取、预上传、分片上传)

文章目录 前言一、环境部署1.封装BdPan类库2.回调地址配置 二、获取授权码Code1.手动获取Code2.生成本地token3.读取AccessToken凭证4.爬虫函数 二、简化模式授权三、网盘基础服务1.获取用户信息2.获取网盘容量信息3.递归获取文件列表4.预上传5.分片上传6.创建文件 总结 前言 百…