码迷,mamicode.com
首页 > 其他好文 > 详细

漏洞挖掘 堆栈的溢出实践

时间:2017-01-12 07:59:11      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:getc   实践   返回值   tchar   返回   img   lag   rcp   buffer   

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

 

技术分享

 

 

 

原理图

技术分享

 

漏洞挖掘 堆栈的溢出实践

标签:getc   实践   返回值   tchar   返回   img   lag   rcp   buffer   

原文地址:http://www.cnblogs.com/yifi/p/6274342.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!