首页 > 代码库 > 初级栈溢出-数组越界

初级栈溢出-数组越界

#include"stdio.h"
#define PASSWORD "123456"

int verify_password (char *password)
{
	int authenticated;
	char buffer[8];
	authenticated=strcmp(password,PASSWORD);
	strcpy(buffer,password);
	return authenticated;
}
main()
{
	int valid_flag=0;
	char password[1024];
	while(1)
	{
		printf("please input password:  ");
		scanf("%s",password);
		valid_flag=verify_password(password);
		if(valid_flag)
		{
			printf("incorrect password!\n");
		}
		else
		{
			printf("congratulation!\n");
			break;
		} 
	}
}

 //初级实验代码;

程序通过请求得到两段内存空间,并且两段内存空间相邻;

我们通过输入改变输入的位数,使数组最后的截断符%00溢出至下一个储存空间authenticated使其中的数据变为0,得到我们想要的输出。

理论上应该是8个数字或字母溢出,17个崩溃

但是自己验证时却是12个溢出,17个崩溃正常?????

 

初级栈溢出-数组越界