漏洞挖掘 堆栈的溢出实践
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了漏洞挖掘 堆栈的溢出实践相关的知识,希望对你有一定的参考价值。
#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字符会返回验证成功
原理图
以上是关于漏洞挖掘 堆栈的溢出实践的主要内容,如果未能解决你的问题,请参考以下文章
2017-2018-2 20179215《网络攻防实践》第十周作业
2017-2018-2 20179216 《网络攻防与实践》第十周作业