禁用安全功能使 Linux 容易受到缓冲区溢出的影响

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)

在尝试溢出机器之前使用这两个命令的目的是什么?他们禁用哪些安全功能会导致缓冲区溢出?

Chu*_*urn 5

sudo echo 0 > /proc/sys/kernel/randomize_va_space

这就是地址空间布局随机化(ASLR)/DYNAMICBASE在 Windows 上,这是通过或开关选择每个应用程序/HIGHENTROPYVALinux 命令会在整个操作系统中禁用它,因此请务必在完成作业后将其重新打开。另请参见Windows Vista 中的地址空间布局随机化

-fno-堆栈保护器

这就是缓冲区溢出保护。在 Windows 上,它是通过使用/GS. 另请参阅编译器安全检查深入了解为什么它有用。

-z 执行堆栈

这就是数据执行保护。在 Windows 上,这是通过开关选择每个应用程序/NXCOMPAT。另请参见/DYNAMICBASE 和 /NXCOMPAT

至于为什么你必须禁用这些安全功能,这可能是你的作业的重点。

在 Windows 上,还有一种由/SAFESEH链接器开关控制的安全机制。有关具体内容,请参阅防止利用 SEHOP 覆盖结构化异常处理程序 (SEH) 。