栈溢出攻击系列:shellcode在linux x86 64位攻击获得root权限(四)linux下进程内存布局

来源:互联网 发布:淘宝假物流单号怎么办 编辑:程序博客网 时间:2024/05/02 06:46

传统的32位模式下的linux内存布局,而对64位大概布局是一样的,只是分配的开始地址不同而已。


我们的主要目的是研究栈的分配,在图上我们可以看到kernel space 到stack中有一段random stack offset,而这块区间的存在是让攻击者更难以猜到被攻击栈的起始地址,从而增加栈溢出攻击的难度,但在linux上是可以配置这段random stack offset是否存在。

/proc/sys/kernel /randomize_va_sapce

通过设置参数为0 可以关闭random stack offset.

echo 0 >/proc/sys/kernel/randomize_va_space
当设置参数为0的时候,这样每次起来的相同的程序的栈空间地址分配是一样的,我们可以通过/proc/[processid]/maps 来观察进程的内存分布。

运行下面的代码多次在randomize_va_space为0或者1的情况下

buff.c

#include <stdio.h>#include <string.h>int main(int argc, char** argv){char buffer[500];printf("buf's 0x%8x\n",&buffer);return 0;}

gcc -o buff buff.c

你会发现在0的时候,多次的结果是一样的,而在1的时候多次结果是不相同的,下面系列中,我们会针对这2种不同的情况下的采用不同的策略。







0 0
原创粉丝点击