首页 > 代码库 > 初级栈溢出-数组越界
初级栈溢出-数组越界
#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个崩溃正常?????
初级栈溢出-数组越界
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。