首页 > 代码库 > 漏洞挖掘 堆栈的溢出实践
漏洞挖掘 堆栈的溢出实践
#include <stdio.h>#define PASSWORD "1234567"int verify_password(char *password){ int authenticated; char buffer[8]; authenticated = strcmp(password,PASSWORD); strcpy(buffer,password); //溢出就在这里 return authenticated;}void 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 !=0) { printf("incorrect password!\n\n"); } else { printf("Congratulation! You have passed the verification!\n"); break; } } getchar(); }
在xDbg中 加载后 在strcpy(buffer,password);这句后加断点 查看ESP中的内存
发现字符串最后一个反斜杠0刚好淹没在返回值上 所以输入8个ascll字符会返回验证成功
原理图
漏洞挖掘 堆栈的溢出实践
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。