码迷,mamicode.com
首页 > 编程语言 > 详细

初级栈溢出-数组越界

时间:2017-03-06 15:43:23      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:个数   strcpy   efi   应该   数字   put   lease   else   数组   

#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个崩溃正常?????

 

初级栈溢出-数组越界

标签:个数   strcpy   efi   应该   数字   put   lease   else   数组   

原文地址:http://www.cnblogs.com/xiaobaicai-123/p/6473419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!