与 execstack 链接的 fstack-protector 是否可以防止缓冲区溢出攻击?
Does fstack-protector linked with execstack protect against a buffer overflow attack?
我无法理解这两个到底是做什么的。以及打开时的阻止。
谢谢
fstack-protector 是一种保护,它会在 return 您的函数调用地址
之前放置一些称为 stack canary 的随机内容
在return之前会检查随机内容是否与return之前相同,否则退出。
因为缓冲区溢出攻击是试图覆盖函数的return地址,所以它必须覆盖堆栈金丝雀。
但是stack canary是随机生成的,所以可以用来防止覆盖return地址。
缓冲区溢出攻击也带有shell代码。
覆盖 return 地址并指向您的 shell 代码,然后生成 shell。
Execstack 是一种防止这种情况发生的保护措施。
输入缓冲区在堆栈上,您的shell代码也在堆栈上。
但是 execstack 使堆栈的内存区域不可执行。
当程序return到shell代码时,会发现此内存区域不可执行。
会造成分段错误
我无法理解这两个到底是做什么的。以及打开时的阻止。
谢谢
fstack-protector 是一种保护,它会在 return 您的函数调用地址
之前放置一些称为 stack canary 的随机内容在return之前会检查随机内容是否与return之前相同,否则退出。
因为缓冲区溢出攻击是试图覆盖函数的return地址,所以它必须覆盖堆栈金丝雀。
但是stack canary是随机生成的,所以可以用来防止覆盖return地址。
缓冲区溢出攻击也带有shell代码。
覆盖 return 地址并指向您的 shell 代码,然后生成 shell。
Execstack 是一种防止这种情况发生的保护措施。
输入缓冲区在堆栈上,您的shell代码也在堆栈上。
但是 execstack 使堆栈的内存区域不可执行。
当程序return到shell代码时,会发现此内存区域不可执行。
会造成分段错误