首页 > 其他 > 详细

漏洞挖掘 利用漏洞控制程序执行流程

时间:2017-01-12 11:12:46      阅读:265      评论:0      收藏:0      [点我收藏+]
#include <stdio.h>

#include <windows.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];

    FILE *fp;



    if (!(fp=fopen("password.txt","rw+")))

    {

        exit(0);

    }

    fscanf(fp,"%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");

    }

    fclose(fp);

    getchar();

}

 

 

 

利用XDbg 当密码验证函数返回  此时的堆栈时

技术分享

 

71717171 为qqqq 即PassWord.txt中的内容  现在只需要构建数据  将0029FA8C 出的地址淹没成我们需要跳转的地址即可

查看0029FA8C 所包含的地址 0040158A 可以得知这是调用完密码验证函数后 main函数下一步要执行的 将此处替换为验证成功即可

 

技术分享

 

 

用16进制编辑器  

漏洞挖掘 利用漏洞控制程序执行流程

原文:http://www.cnblogs.com/yifi/p/6275088.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!