初级栈溢出-数组越界
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初级栈溢出-数组越界相关的知识,希望对你有一定的参考价值。
#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个崩溃正常?????
以上是关于初级栈溢出-数组越界的主要内容,如果未能解决你的问题,请参考以下文章