为了使Linux机器容易溢出,我必须使用这些命令
-fno-stack-protector -z execstack -o bug bug.c
和
exists
在尝试溢出机器之前使用这两个命令的目的是什么?他们禁用哪些安全功能导致缓冲区溢出?
答案 0 :(得分:4)
sudo echo 0>的/ proc / SYS /内核/ randomize_va_space
这是Address Space Layout Randomization (ASLR)。在Windows上,这是通过/DYNAMICBASE
或/HIGHENTROPYVA
开关在每个应用中选择加入。 Linux命令会禁用整个操作系统,因此请务必在完成作业后重新打开它。另请参阅Address Space Layout Randomization in Windows Vista。
-fno堆叠保护器
这是Buffer overflow protection。在Windows上,通过使用/GS
构建来启用它。另请参阅Compiler Security Checks In Depth了解其有用的原因。
-z execstack
这是Data Execution Protection。在Windows上,这是通过/NXCOMPAT
开关在每个应用程序中选择加入。另请参阅/DYNAMICBASE and /NXCOMPAT
至于你必须禁用这些安全功能的原因,这可能是你作业的重点。
在Windows上,还有一种安全机制由
/SAFESEH
链接器开关控制。有关此内容,请参阅Preventing the Exploitation of Structured Exception Handler (SEH) Overwrites with SEHOP。