漏洞挖掘 堆栈的溢出实践

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字符会返回验证成功

 

 

 

 

原理图

 

以上是关于漏洞挖掘 堆栈的溢出实践的主要内容,如果未能解决你的问题,请参考以下文章

缓冲区溢出漏洞实验

Buffer lab——20145326蔡馨熠

2017-2018-2 20179215《网络攻防实践》第十周作业

2017-2018-2 20179216 《网络攻防与实践》第十周作业

2017-2018-2 20179225 《网络攻防与实践》 第10周作业

2017-2018-2 20179205《网络攻防技术与实践》第十周作业 缓冲区溢出攻防研究