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