linux - 作者怎么能百分百确定环境变量的地址呢?

标签 linux fedora buffer-overflow

剥削艺术一书中,第 165 页声称 enter image description here

可是,这个地址0xbffffffa怎么可能固定呢?我的意思是,作者表达自己的方式表明这是任何机器上任何 Linux 发行版的普遍事实,但绝对不是这种情况,那么究竟是什么意思呢?他怎么知道shellcode的地址?

最佳答案

无论如何都不是这方面的专家,但我的理解是,在 Linux 中,每个进程都有自己的虚拟地址空间,内核内存映射到 0xC0000000 以上的地址,堆栈从 0xC0000000 向下增长,堆向上增长从 0x00000000 开始。

如果是这样的话,这就是说环境将是堆栈中的第一个东西——0x2BFFFFFA 就在 0xC0000000 以下几个字节——并且你可以预测它的地址,因为只有固定数量的东西在此之前。

我认为这仅适用于未打开地址空间布局随机化 (ASLR) 的情况,尽管据我所知,我认为 ASLR 不会完全阻止此类利用。

关于linux - 作者怎么能百分百确定环境变量的地址呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54065087/

相关文章:

C: strncpy 比分配的字符多然后打印...意外输出?

c - 如何关闭 gcc 编译器优化以启用缓冲区溢出

c++ - 文件删除(使用取消链接)和释放所有磁盘空间之间的延迟

linux - 语法错误 : unexpected end of file

java - linux shell 和 java

linux - 在 fedora linux 上访问 localhost

c# - linux wine Word 互操作 application.Documents.Open 在 word 中打开文档但不将文档返回给客户端

mysql - Vala:MySQL程序未编译

linux - 无法在 Linux fedora 中运行 javafx mediaplayer

将两个缓冲区合并为一个