出题保护

gcc -fno-stack-protector
-z execstack
-no-pie -fno-PIE
-Wl,-z,norelro
-D_FORTIFY_SOURCE=0
-O0
-erroverflow.c -o overflow

1. fno-stack-protector

  • 功能:禁用 Stack Canary(栈金丝雀) 保护。

2. z execstack

  • 功能:告诉链接器将 栈(stack)标记为可执行

3. no-pie -fno-PIE

  • 功能:禁用 位置无关可执行文件(PIE)

4. Wl,-z,norelro

  • 功能:禁用 RELRO(Relocation Read-Only) 保护。

5. D_FORTIFY_SOURCE=0

  • 功能:禁用 _FORTIFY_SOURCE 安全检查。
    后果:即使使用 -O1 以上优化,也不会对 strcpymemcpy 等危险函数做编译时/运行时边界检查。

6. O0

  • 功能:关闭所有编译器优化。
保护机制 状态 攻击者能否利用?
Stack Canary ❌ 关闭 ✅ 可栈溢出覆盖返回地址
NX (DEP) ❌ 关闭 ✅ 可在栈上执行 shellcode
ASLR(主程序) ❌ 无效 ✅ 地址固定,硬编码可用
RELRO ❌ 关闭 ✅ 可改写 GOT 劫持函数
FORTIFY ❌ 关闭 ✅ 危险函数无边界检查
echo 0 > /proc/sys/kernel/randomize_va_space
posted @ 2026-01-29 18:22  ziziranran  阅读(2)  评论(0)    收藏  举报
```html
```