任务 6.a:启用 StackGuard 保护
章节大纲
-
许多编译器,如 gcc,实现了一种称为 StackGuard 的安全机制,以防止缓冲区溢出。在有此防护机制的情况下,缓冲区溢出攻击将不会生效。 实验里的被攻击程序是在未启用 StackGuard 保护的情况下编译的。 在这个任务中,我们将打开它并观察会发生什么。
请前往 server-code 文件夹,在 gcc 参数中去掉 -fno-stack-protector 选项,并重新编译 stack.c。我们仅使用 stack-L1,但与其在容器中运行该程序,我们将直接从命令行运行它。请创建一个可以导致缓冲区溢出的文件,然后向 stack-L1 传入该文件的内容。请描述并解释你的观察结果。
$ ./stack-L1 < badfile