栈溢出
2.1栈溢出原理
#include "stdafx.h"
#include<stdio.h>
#include<string.h>
int vulnfun(char* str)
{
char stack[10];
strcpy(stack, str);//这里造成溢出
return 0;
}
int main()
{
char* str = "AAAAAAAAAAAAAAAAAAAAAAAA"; //
vulnfun(str);
return 0;
}
简单回忆以下库函数strcpy(char* destination,const char* source):是将一个字符串复制到另一个空间地址中的函数,'\0'是停止拷贝的终止条件,同时也会将'\0'也复制到目标空间。
- char* destination----目标字符串的首地址
- const char* source---源地址:被复制的字符串的首地址,用const修饰,避免修改掉被拷贝的字符串
- 函数的返回值类型:char*:返回的是目标字符串的首地址。