关闭linux对栈的随机化处理


今天总算找到了怎么关闭linux对栈的随机处理了的方法了,有好几次在这个问题上纠结,却百度不到资料,只好用ubuntu4这种早期的系统进行漏洞挖掘的学习(没办法,我做为初学者还处理不了栈被随机化的情况),今日看资料,偶然发现解决办法。
 ============================================================================================
《缓冲区溢出光速入门》提到:
“.....你的Kernel作了栈随机处理,这个机制是专门防范溢出用的,对安全
 而言这个机制非常有用,但对你学习而言则带来不少麻烦,为了学习方便,可以先用以下方
 法禁用内核的这个功能: sudo root,然 echo 0 >/proc/sys/kernel/randomize_va_space ;
 如果是RedHat系列, 可以通过echo 0 > /proc/sys/kernel/exec-shield-randomize禁用。 )”
=============================================================================================
在ubuntu10.4中实验如下:
  more /proc/sys/kernel/randomize_va_space 
 2
这个是原值
======================================
 试图用vi写入0,提示:
 "/proc/sys/kernel/randomize_va_space" E667: Fsync failed
 Press ENTER or type command to continue
 什么原因?
 答:U cannot edit the  /proc files with  vi  . if u want 
 to change its value u can  echo to that file  like 
 echo "20000000" >   /proc/sys/kernel
======================================
 # echo 0 >/proc/sys/kernel/randomize_va_space 
 # more /proc/sys/kernel/randomize_va_space 
 0
=====================================
 用下面这个程序,可以检查是否修改成功:
  more find_start.c 
 #include<stdio.h>
 unsigned long find_start(void)
 {
  __asm__("movl %esp,%eax");
 }
 int main()
 {
  printf("0x%x\n",find_start());
 }
./find_start 
0xbffff738
./find_start 
0xbffff738
./find_start 
0xbffff738
./find_start 
0xbffff738
./find_start 
0xbffff738
都一样,说明linux对栈的随机化处理功能已经被关闭了。

相关内容

    暂无相关文章