使用vs编写缓冲区溢出demo 的配置
最近在看 逆向与漏洞分析 (魏强) (Z-Library) 这本书,书上的关于缓冲区溢出的实验代码,使用vs 编写代码编译出来的可执行程序默认情况下就会存在一系列保护,如何不修改的话真的就调试不了书上的实验。主要是书上说也是使用vs编译的,但是具体细节没有告诉读者,也是挺ex的。
一、常规代码检查
当我们在vs 中使用scanf,printf 这样的函数时就会报错下面的错误:
说scanf 函数不安全,提示我们使用 scanf_s 来替代,但是替代后对于VS是可以编译的,换到其他编译器就不行了。所以我们直接在引入头文件的第一行使用#define _CRT_SECURE_NO_WARNINGS 1
就像这样:
___security_cookie机制,防止栈溢出
编译完成后我们使用ida 打开exe文件,发现存在这个安全检查记得关闭。
项目右键–>属性
最后一步,关闭运行时检查
当你在实验中开始溢出时,程序就会报错,弹出
Run-Time Check Failure #2 - Stack around the variable 'buffer' was corrupted.
参考:
https://www.cnblogs.com/cthon/p/8890242.html
https://www.cnblogs.com/mavaL/articles/2627516.html
https://www.cnblogs.com/taadis/p/10666060.html
https://blog.csdn.net/qq_43746320/article/details/104603363