任务 9.a:开启 StackGuard 防护
Section outline
-
许多编译器(如 gcc)实现了名为 StackGuard 的安全机制来防止缓冲区溢出。在该保护存在的情况下,缓冲区溢出攻击将不会起作用。 在前面的任务中我们在编译程序时关闭了 StackGuard 保护机制。在本任务中我们将开启它并观察会发生什么。
首先重复任务 3 的攻击不开启 StackGuard,确认攻击仍然成功。记住要先关闭地址随机化,因为在前一个任务中你已经将其打开了。 然后通过重新编译易受攻击的 stack.c 程序而不使用 -fno-stack-protector 标志来开启 StackGuard 保护。 在 gcc 版本 4.3.3 及以上中,StackGuard 默认启用。发起攻击并报告和解释你的观察结果。