标签:个数 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