Bis*_*ran 0 c linux buffer-overflow
为了使Linux机器容易溢出,我必须使用这些命令
sudo echo 0 > /proc/sys/kernel/randomize_va_space
Run Code Online (Sandbox Code Playgroud)
和
-fno-stack-protector -z execstack -o bug bug.c
Run Code Online (Sandbox Code Playgroud)
在尝试溢出机器之前使用这两个命令的目的是什么?他们禁用哪些安全功能会导致缓冲区溢出?
sudo echo 0 > /proc/sys/kernel/randomize_va_space
这就是地址空间布局随机化(ASLR)。/DYNAMICBASE在 Windows 上,这是通过或开关选择每个应用程序/HIGHENTROPYVA。Linux 命令会在整个操作系统中禁用它,因此请务必在完成作业后将其重新打开。另请参见Windows Vista 中的地址空间布局随机化。
-fno-堆栈保护器
这就是缓冲区溢出保护。在 Windows 上,它是通过使用/GS. 另请参阅编译器安全检查深入了解为什么它有用。
-z 执行堆栈
这就是数据执行保护。在 Windows 上,这是通过开关选择每个应用程序/NXCOMPAT。另请参见/DYNAMICBASE 和 /NXCOMPAT
至于为什么你必须禁用这些安全功能,这可能是你的作业的重点。
在 Windows 上,还有一种由
/SAFESEH链接器开关控制的安全机制。有关具体内容,请参阅防止利用 SEHOP 覆盖结构化异常处理程序 (SEH) 。