VC++6.0栈溢出实验
参考网站:
1. 打开vc++6.0,新建cpp文件,输入如下代码:
(注:这里实际是用C语言写的,所以导入的头文件与参考资料中不同,此处导入stdio.h
)
#include "string.h"
#include "stdio.h"
void fun()
{
char password[6] = "ABCDE";
char str[6];
gets(str);
str[5] = '\0';
if(strcmp(str,password)==0)
printf("OK.\n");
else
printf("NO.\n");
}
int main(){
fun();
return 0;
}
2. 在查看 -> 调试窗口
中打开memory和Registers窗口,如下图所示
3. 在如图所示位置设置断点,编译后按f10进行逐步调试,直到箭头处于图中位置
在Registers中复制EBP值,在Memory中查找,找到对应的内存地址及其存储的数据,进行分析。
分析过程可参考【使用vc6.0探讨栈溢出对代码进行攻击】