关于内存 页 物理地址 虚拟地址的思考 漏洞利用思考

x86虚拟内存和qemu内存虚拟化 个人产生一些想法,努力去找答案,然后记录下来,刚开始都是一些问题,由一个问题想到更多问题,有些问题之间扯的很远,然后找答案,记录下来的都是问题和答案,努力加工整理成文章,感觉还是不成体系,理解不深而且未必正确。 阅读详情

对于页属性的管理相应思考

我看了下,虚拟地址到物理地址的转换很简单,解释虚拟页号对应找到物理页号,偏移计算出物理地址。而且虚拟偏移和物理偏移是一样的。所以这里这是虚拟页好和物理页号不可能是简单的确定映射关系。一定有一个复杂的动态映射算法。这个我先不关心。我想知道的反而是页表权限属性的一些内容。

我这里理解页面如果分虚拟和物理,那么页面的执行属性是否也分虚拟和物理。如果区分,那么我们更改属性是否单纯的通过丹村的修改虚拟内存或是物理内存的也属性是否也会影响到对应的物理页面和虚拟页面。
1.单纯修改一方方面的也属性
2.两方面都修改。

1.用户态修改
2.内核态修改。

关于提权思路

一般有两种

1.利用内核权限执行commit_creds(prepare_kenrel_cred);

这个代码可以直接使调用的者的用户层拥有root权限。

2.爆破cred结构

3.内核反弹shell,用户态连接,即为root权限。

关于堆地址泄露

四次分配相同大小fastbin, 释放1,3两次分配内存进入链表。 那么三号前向指针将指向1号内存。利用任意读漏洞,将4号内存向前任意读,将可以获得1号内存堆的地址。
那么就获得再次fastbin堆的地址。

任意地址写

释放的堆块如果被溢出覆盖了前后向指针,那么分配的地址就受到的自主控制,实现了任意地址读写的目的。
【linux内核漏洞利用】call_usermodehelper提权路径变量总结

关于对可执行的问题

本来我利用堆地址泄露的能力,在堆块复制了需要执行的shellcode,但是当我mprotect修改虚拟地址的可执行属性后,堆块中的代码并没有获得可执行的能力。

unsorted bin attack

修改任意地址为一个较大的值。

offbyone

堆溢出一个字节实现任意地址读写。

fastbinattack

任意地址读写 单链表容易实现。双链表任意读写不太容易

unlink

那么 unlink 具体执行的效果是什么样子呢?我们可以来分析一下

在这里插入图片描述

  1. BK->fd=P->fd ==> BK->fd=FD
  2. FD->bk=P->bk ⇒ FD->bk=BK
    某种状况溢出更改P fd bk的值:
  3. FD=P->fd = target addr -12
  4. BK=P->bk = expect value
  5. FD->bk = BK,即 *(target addr-12+12)=BK=expect value
  6. BK->fd = FD,即 *(expect value +8) = FD = target addr-12

这里的情况就会变为target addr-12将会变为伪造的前向块, expect value将被当作伪造的后向块。实际这两个块不在链表中。
但是这两个伪造的块中的相应位置值却被改变了。

但是目前的lib分配器有校验,

// fd bk
if (__builtin_expect (FD->bk != P || BK->fd != P, 0))                      \
  malloc_printerr (check_action, "corrupted double-linked list", P, AV);  \

为了满足这个条件,我们必须伪造 前后假块中的前后向指针,使其指向P。那么便绕过了检测。

unlink

Drammer攻击解析:Rowhammer硬件漏洞在安卓权限提升中的利用与防御 内存管理是计算机系统的核心基础,它通过虚拟内存、物理地址转换等机制为应用程序提供隔离与保护。然而,现代DRAM内存芯片在制程微缩化过程中产生的物理缺陷,如Rowhammer效应,可能绕过这些软件层面的保护机制。Rowhammer的原理在于反复激活特定内存行产生的电信号干扰,会导致相邻行存储的比特位发生翻转,这种物理级的位翻转效应构成了硬件安全的新威胁。从技术价值看,这类漏洞的利用意味着攻击者无需依赖传统软件漏洞,即可从底层物理层面突破系统安全边界,对移动设备、云计算基础设施等场景构成严重威胁。Drammer 阅读详情

相关推荐

从TOCTOU到物理内存读写:内核驱动漏洞链实战剖析

TOCTOU(Time-of-Check Time-of-Use)竞争条件漏洞是操作系统内核中一类经典的安全问题,其本质在于程序对某个条件(如资源状态)的检查与使用之间存在可被攻击者利用的时间窗口。理解其原理需要深入内核的并发执行机制与内存管理模型。该漏洞的技术价值在于,单个TOCTOU缺陷可能无法直接造成严重破坏,但通过与内核池分配器行为(Pool Feng Shui)等系统机制结合,攻击者可以构建漏洞链,将有限的权限逐步提升,最终可能实现任意地址读写甚至物理内存操纵,从而完全绕过系统的安全边界。在Win

lizaochengwen的专栏 358

深入理解计算机系统第九章知识点总结

无论哪种情况,一旦一个虚拟页面被初始化了,它就在一个由内核维护的专门的交换文件(也叫交换空间)之间换来换去。他将两个进程中的每个页面都标记为只读。时存在的虚拟内存相同,当两个进程的任意一个后来进行写操作时就会触发写时复制机制创建新页面。通过将一个虚拟内存区域与一个磁盘上的对象关联起来,来初始化这个虚拟内存区域的内容。当fork被调用时,内核为新进程创建各种数据结构,并且为,他分配一个唯一的。交换空间的大小限制着当前运行着的进程能够分配的虚拟页面的综述。删除当前进程虚拟地址的用户部分中的已存在的区域结构。

qq_51011672的博客 2540

CVE-2019-16098漏洞复现:利用RTCore64驱动绕过Windows驱动签名强制机制

驱动签名强制是Windows内核安全的核心机制,它要求所有内核驱动必须经过数字签名验证,以防止恶意代码获取系统最高权限。其原理是通过内核变量控制验证流程,确保只有受信任的代码能在内核态执行。这项技术的价值在于构建了操作系统底层的信任链,是防止rootkit和未授权驱动加载的关键防线。在渗透测试和系统安全研究中,绕过DSE成为权限提升和内核漏洞利用的重要环节。本文聚焦于CVE-2019-16098漏洞,该漏洞存在于微星RTCore64.sys驱动中,由于缺乏对IOCTL参数的严格校验,攻击者可利用其获得内核任

weixin_30335353的博客 326

【操作系统】虚拟页和物理页

一、前置概念 实模式:直接操作物理内存。每次只能运行一个程序,不安全;最大使用内存1M,限制太大。 保护模式:虚拟地址被转换为物理地址,要有页表。 装载器:把指令和数据加载到内存运行。要满足两个条件: 1)可执行程序加载后占用内存空间应该是连续的。 2)我们需要同时加载很多个程序,并且不能让程序自己规定在内存中加载的位置。 那就是我们可以在内存里面,找到一段连续的内存空间,然后分配给装载的程序,然后把这段连续的内存空间地址,和整个程序指令里指定的内存地址做一个映射。 二、分段分页 分段分页都是操作系统发展

HeavenDan的博客 1万+

ASLR in optee

目录1、overview2、ASLR for OP-TEE Core3、Random seed4、Building5、Relocate6、Mappings7、Possible locations8、TA load 思考: 1、什么是ALSR? 2、在OPTEE Core中如何开启ALSR? 3、在TAs中如何开启ALSR? 1、overview Address space layout randomization (ASLR) 是一种在运行代码时随机化虚拟地址的安全技术。 ASLR has been s

baron-周贺贺-代码改变世界ctw 510

大红球预警版-精选+自定义板块监控

这是一款简单易用的股票大单资金监控插件,兼容通达信软件,可嵌入分时图或定制版面。它以红绿圆球直观显示主力买卖情况(红球为买,绿球为卖),支持300万以上大单语音播报。插件提供实时资金流向分析、多股同时监控、自定义预警条件等功能,无需L2账号。用户可自由切换图形/列表模式,监控特定板块,并配合幻影软件实现自动交易。虽然上涨股通常红球占优,但需结合其他指标综合判断。该插件完全免费,包含详细视频教程,适合新手使用。

guleba的博客 1794

linux内存管理(虚拟页与物理页的映射)

页表作用是虚拟页” 与 “物理页框” 的映射关系。

shanstellar的博客 1051

Geant4学习一:写一个简单程序

1、 基本介绍

ccwwNUAA的博客 7697

虚拟内存机制,页&页框&页表 物理地内存和虚拟内存的联系

虚拟内存机制 计算机的存储系统 为什么要有虚拟内存 在早期的计算机中,是没有虚拟内存的概念的。我们要运行一个程序,会把程序全部装入内存,然后运行。 当运行多个程序时,经常会出现一下问题: 进程地址空间不隔离,没有权限保护 由于程序都是直接访问物理内存,所以一个进程可以修改其他的内存数据,甚至修改内核地址空间中的数据。 内存使用效率低 当内存空间不足时,要将其他程序暂时拷贝到硬盘,然后将新的程序装入装出,内存使用效率会十分低下。 程序运行的地址不确定 因为内存地址是随机分配的,所以程序运行的地址也是不确

hhb442的博客 3907

2023-12-26~2025-07-04备份

一、海康视觉与汇川机器人 服务器-客户端通信设置IP在同一网段名称IP端口类型海康相机工控机7930服务器机器人3000客户端海康VM服务器设置1通信管理 增添TCP服务端,设置本机IP:192.168.0.20,端口号79302 协议解析 通信双方约定通信格式(设置收发数据格式,分隔符)机器人客户端设置(不同类型机器人设置有差别)1 通讯服务设置 设置连接服务器IP、服务端端口号、机器人端口号,确保连接正常2 协议解析 使用指令代码构建通讯解析。

青铜小码农 3126

Python批量注册脚本开发详细

开发一个Python批量注册脚本需要考虑多个方面,包括目标网站的注册流程、验证码处理、请求发送、数据存储等。以下是一个详细的开发流程和代码示例,用于实现基本的批量注册功能。

nsp202505的博客 3346

物理内存与虚拟内存之间的映射

1、用户编制程序时使用的地址称为虚地址或逻辑地址,其对应的存储空间称为虚存空间或逻辑地址空间;而计算机物理内存的访问地址则称为实地址或物理地址,其对应的存储空间称为物理存储空间或主存空间。 2、虚拟存储器的容量限制:主存容量+辅存(硬盘)容量。 3、物理内存:在应用中,真实存在的,插在主板内存槽上的内存条的容量的大小。从本质上来说,物理内存是代码和数据在其中运行的窗口。 4、虚拟

ZHYFXY的博客 2万+

人工智能机器学习从入门到高级学习资料(含资料下载地址)

机器学习是一个技术含量较高的领域,高效学习需要多种途径相结合.以下是一些推荐的学习资源。首先介绍几个比较有用的社区,包含了丰富的学习资料

2401_86900375的博客 1648

页式存储管理:从逻辑地址到物理地址的转换原理与实践

内存管理是现代操作系统的核心基础,其中页式存储管理是实现高效、安全内存访问的关键技术。其核心原理是通过分页机制,将进程的逻辑地址空间划分为固定大小的页,并利用页表建立逻辑页与物理内存页框之间的映射关系。这一机制不仅消除了内存碎片,还为进程提供了统一的地址空间视图,并天然实现了内存保护。在技术价值上,页式管理支撑了虚拟内存的实现,使得程序能够运行在比物理内存更大的地址空间中,并通过多级页表、TLB快表等优化技术提升了系统性能。从应用场景看,无论是桌面操作系统如Windows、Linux,还是嵌入式系统、国产化

congsikuai0611的博客 448

linux操作系统使用以太网连接ubuntu,设置固定ipv4

首先,您需要确定要配置的网络接口。可以使用ifconfig -a或ip addr命令来列出当前系统上的所有网络接口及其相关信息。找到您要配置的网络接口名称,例如eth0、ens33或enp0s3;保存并关闭文件后,您需要重启网络服务以使更改生效。在linux操作系统中,要使用交换机连接以太网可以直接使用交互界面;如果你的操作系统没有交互界面,你可以使用命令方式配置;点击ipv4,方式为手动,可以设置ip和子网了;开头,后接网络接口名称。第三步:点击有线最右边圆形控件;第二步:点击有线设置;

2301_79311842的博客 2404

极验验证码: 一点即过验证(鼠标轨迹分析)

2、第一个验证接口分析(第一个w值还原) 3、第二个验证接口(第二个w值还原)这里定位w生成跟上篇文章一样,就不展开了;主要分析tt值(鼠标轨迹)的生成逻辑

qq_49268524的博客 1009

Cortex-X4硬件页聚合漏洞解析与安全防护

硬件页聚合(HPA)是Arm架构中提升内存访问效率的关键技术,通过合并相邻页表项减少TLB压力。其核心原理基于MMU自动检测物理连续且属性相同的页块,在虚拟化环境中却可能因页表不一致性导致安全漏洞。当未遵循Break-Before-Make规则或contiguous位设置冲突时,可能引发地址转换异常,最严重可导致EL1虚拟机突破EL2隔离。该漏洞(CVE-2024-5660)揭示了性能优化与安全边界的平衡难题,涉及TLB管理、虚拟化隔离等基础架构问题。针对云计算、移动设备等场景,需结合微码更新、寄存器禁用等

weixin_30329623的博客 766

第076篇:大涡模拟进阶

大涡模拟(Large Eddy Simulation, LES)是介于直接数值模拟(DNS)和雷诺平均方法(RANS)之间的重要湍流模拟方法。本文深入介绍动态Smagorinsky模型、尺度相似模型、WALE模型和隐式LES等高级亚格子模型。通过Python实现槽道湍流和圆柱绕流的LES求解器,详细展示近壁面处理、动态系数计算和亚格子应力建模技术。大涡模拟,亚格子模型,动态模型,Smagorinsky,WALE模型,尺度相似模型,近壁面处理,槽道湍流LES的核心思想是对Navier-Stokes方程进行空间

2401_87715305的博客 740

linux tomcat配置虚拟地址映射访问404_x86虚拟内存和qemu内存虚拟化

内存虚拟化是一个很大的话题,最近安全部门发现了一个qemu内存虚拟化的安全漏洞,反馈给云平台让解决,感觉很棘手,引起了我对内存虚拟化的思考,想到什么问题就把思考记录下来。x86虚拟内存问题是由学习qemu MemoryRegion想到的,文档memory.rst中有一句话“memory banks used when the guest address space is smaller than ...

weixin_42415491的博客 136

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Linux操作系统学习---进程地址空间

在学习c,c++这些偏底层的语言时,我们常常会对一个变量取地址,一遍对他进行一系列的操作 . 可是 , 这真的是真实的物理地址吗?其实并非如此 , 通过了解进程地址空间,我们就能解开这个困惑.了解了进程地址空间(虚拟地址空间)这一块的内容后 , 我们就可以从以往语言学习里对指针的理解发生一定程度的革新;此外 , 也可以理解诸如为啥会存在同地址却不同值的情况.这对于后续的操作系统的学习都是很有帮助的,当然了,这还只是皮毛,还有更多内容等着我们去探索!!!

ha2042894194的博客 861

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

深入解析x64架构9-9-9-9-12分页机制:从虚拟内存到物理地址转换

虚拟内存是现代操作系统的核心机制,它通过分页技术为每个进程提供独立的地址空间,实现内存隔离与保护。其基本原理是将虚拟地址转换为物理地址,这一过程依赖于多级页表结构。在x64架构中,9-9-9-9-12分页是标准实现,它将48位虚拟地址划分为五部分,通过四级页表逐级索引,最终定位到4KB物理页面。这种设计不仅支撑了内存超售和共享内存等高级特性,还通过TLB缓存优化了翻译性能。理解分页机制对于系统编程、驱动开发和性能调优至关重要,尤其是在处理缺页异常、内存映射文件和写时复制等场景时。本文以Windows x64

weixin_30338497的博客 382

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

思考:通过MMU/TLB/Cache对安全内存攻击的可能性

在安全架构的设计时,我们在Core和DDR之间增加了一个TZC做为memory filter,数据流为:Core ---> TZC---->DDR, 这种架构下,core以非安全身份发起的对安全内存的读写,将会被TZC挡住。 但是这都是在理想的情况下,事实上Core发起对内存的读写,未必经过TZC未必到DDR,有可能到cache阶段就完成了,即数据流变成了Core ---> MMU(TLB+Addtress Translation)---->Cache,那么这种情况下,没有TZC

baron-周贺贺-代码改变世界ctw 1474

Linux内存管理专题

http://www.cnblogs.com/arnoldlu/p/8051674.html#memory_management_architecture Linux的内存管理涉及到的内容非常庞杂,而且与内核的方方面面耦合在一起,想要理解透彻非常困难。 在开始学习之前进行了一些准备工作《如何展开Linux Memory Management学习?》, 1. 参考资料 遂决定以如下资料作为参考,进行...

hbcbgcx的博客 393

Rowhammer硬件漏洞如何威胁AI医疗安全:ViT模型与内存攻击的深度解析

内存安全是计算机系统可靠性的基石,其核心原理在于确保动态随机存取存储器(DRAM)中数据的完整性与保密性。然而,随着制程工艺的不断微缩,DRAM单元间物理干扰加剧,催生了Rowhammer这类硬件级漏洞——通过高频访问特定内存行,可诱导相邻单元发生比特位翻转。这一底层缺陷的技术价值在于,它能够绕过所有基于软件和网络的传统安全防线,实现对系统最根本数据层的直接篡改。在AI模型广泛部署的今天,这种攻击的应用场景尤为危险,例如在医疗影像诊断等关键领域。当庞大的视觉Transformer(ViT)模型参数驻留内存时

weixin_33796205的博客 295

空指针解引用(nullpointer dereference)_空指针解引用分析

一、 概述 1.CVE-2018-8120 是通过一个空指针解引用达到任意读写的漏洞。其实个人感觉单凭空指针 解引用的危害就是 BSOD,但是利用方面还是要配合任意读写漏洞,如果单纯的只是 BSOD 那可能充其量算一个 BUG,但是如果能配合任意读写(全称:Write What Where)那么才算 是漏洞。通过思考得出的结论就是漏洞 = BUG+利用。二、 初识空指针解引用1.空指针...

weixin_42508313的博客 1万+

Linux内存空间知识复习

内核态和用户态:当进程线程运行在内核空间时就处于内核态,而进程线程运行在用户空间时则处于用户态;区分内核空间和用户空间的原因:应用程序随便访问内存太危险,比如把系统搞崩溃,清除操作系统的数据;linux操作系统采用虚拟地址空间,以32位系统为例,寻址空间是4G(2的32次方)。用户态到内核态的切换:当一个进程执行系统调用而陷入内核代码中执行时,称进程处于内核运行态;每个进程可以通过系统调用进入内核,内核空间由所有进程共享。内核空间是操作系统内核访问的区域,是受保护的内存空间。一、用户空间和内核空间。

Neil驱动的博客 2206
上一篇: arm64 linux 提权研究
下一篇: linux 内核双机调试
inquisiter
博客等级 码龄10年 374粉丝 228原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值