如何利用GCC编译选项检测栈溢出(2)

下一步,我决定使用-fno-fstack-protector选项来取消这个栈溢出检测功能。我对同样的代码编译之后运行,使用和之前一样输入,下面是我的做法以及运行结果:

$ gcc -Wall -fno-stack-protector stacksmash.c -o stacksmash
$ ./stacksmash

Enter the name
TheGeekStuff

len = [26214]

len of string entered is : [12]

可以看到,一旦使用了这个编译选项(根据前面的编译选项说明,这里-fstack-protector是不会默认开启的),使用相同的输入,运行环境根本无法检测到缓冲区溢出的问题,len的值已经被破坏了。

当然,如果你对gcc很陌生,你也应该理解我们之前讨论过的最常用的gcc编译选项。

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/fbd035ba8f8bf4e3edbc12408fdc033b.html