gpt4 book ai didi

linux - 移动 x86_64 linux 程序的虚拟内存空间以方便 ROP 探索

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:30:55 24 4
gpt4 key购买 nike

面向返回的编程是一种用于逃避 DEP 或 NX 堆栈保护的技术。我正在 x86_64 Linux 中使用 ROP shellcoding。

问题是我的程序和共享库的内存空间似乎始终位于较低的内存地址。

cat /proc/26327/maps
7fdc62ff9000-7fdc63196000 r-xp 00000000 08:03 5317651 /lib64/libc-2.19.so

12 字节的内存地址搞砸了我加载 ROP shellcode 的能力,因为内存地址中的 0 终止了我正在溢出的 strcpy 函数。

我可以完全控制系统和可执行文件。有没有办法强制将共享库加载到更高的内存地址,这样我就可以避免地址空间中出现 0?

最佳答案

它比那更基本:
当 AMD 发明 x86-64 时,他们强制要求规范地址。虽然您理论上有 64 位地址空间,但当前的 x86-64 处理器并没有公开所有地址空间。例如,我的 cpu 告诉我它有 cat/proc/cpuinfo:address sizes : 39 bits physical, 48 bits virtual。由于虚拟地址的上半部分是为内核保留的,因此您无法摆脱用户空间中顶部的空字节。

关于linux - 移动 x86_64 linux 程序的虚拟内存空间以方便 ROP 探索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27450608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com