//******有漏洞的程序*************
//漏洞函数VerifyPassword 由于文件大小是可变的 但是szBuffer大小只有50 当文件大小大于50的
//时候就会产生缓冲区溢出的异常 我们就可以利用这个异常溢出到函数返回地址 达到执行我们代码的目的
#include<windows.h>
#define PASSWORD "1234"
void* VerifyPassword(byte* pRet, void* pszPassword, int nSize) {char szBuffer[50] = {0};*pRet = strcmp(PASSWORD, (char*)pszPassword);return memcpy(szBuffer, pszPassword, nSize); //通过拷贝溢出
}
int _tmain(int argc, _TCHAR* argv[]) {void* pszPassword = NULL;int   nFileSize   = 0;byte  bFlag       = FALSE;FILE* fp;LoadLibraryA("user32.dll");if ( fopen_s(&fp, "password.txt", "rb") ) {MessageBoxA(NULL, "打开文件失败", "error", NULL);return 0;}fseek(fp, 0, SEEK_END);nFileSize = ftell(fp)+1;rewind(fp);pszPassword = ZeroMemory(malloc(nFileSize), nFileSize);fread(pszPassword, nFileSize, 1, fp);VerifyPassword(&bFlag, pszPassword, nFileSize);if (bFlag) printf("密码错误\n");else       printf("密码正确\n");fclose(fp);system("pause");return 0;
}

编译环境配置:Release版,关闭优化,关闭安全检查(GS),关闭数据执行保护(DEP),关闭随机基址(ASLR)

看源代码可知 接收文件的缓冲区大小为50 我们文件数据只要大于50就可以实现缓冲区溢出

用段有规律的连续字符去构造一个明显可以溢出的文件

A0A1A2A3A4A5A6A7A8A9B0B1B2B3B4B5B6B7B8B9C0C1C2C3C4C5C6C7C8C9D0D1D2D3D4D5D6D7D8D9E0E1E2E3E4E5E6E7E8E9F0F1F2F3F4F5F6F7F8F9G0G1G2G3G4G5G6G7G8G9H1H2H3H4H5H6H7H8H9I0I1I2I3I4I5I6I7I8I9J0J1J2J3J4J5J6J7J8J9K0K1K2K3K4K5K6K7K8K9

现在直接运行程序 程序就会崩溃

此电脑->右键->管理->事件查看器->Windows日志->应用程序  查看我们的程序崩溃的信息

配合OD调试 可以看到 在函数ret的时候 返回地址是0x39433843  ASCII码是C8C9 也就是说把我们那串有规律的连续字符C8C9改为我们要执行函数的代码即可执行我们的代码

现在使用messagebox去测试一下 首先用OD找到函数的地址 找到messagebox的地址为0x77092d90 调用两次messagebos

双击程序 就会调用两次messagebox函数

缓冲区溢出漏洞利用--调用白板Messagebox函数两次相关推荐

  1. 安装squid_CVE-2019-12527:Squid缓冲区溢出漏洞利用分析

    报告编号:B6-2019-110702 报告来源:360-CERT 报告作者:360-CERT 更新日期:2019-11-07 0x00 背景描述 2019年8月22日,趋势科技研究团队发布了编号为C ...

  2. 超星阅读器ActiveX缓冲区溢出漏洞利用-LoadPage

    超星阅读器4.0漏洞利用过程: 1.由于是缓冲区溢出,最开始我想到的利用方式"jmp esp" 0---------------------256---------260----- ...

  3. 缓冲区溢出漏洞攻击——Shellcode编写

    一.实验内容 利用一个程序漏洞,编写shellcode,达成效果:蹦出对话框,显示"You have been hacked!(by JWM)" 二.实验原理 因为输入了过长的字符 ...

  4. CVE-2021-2429:MySQL InnoDB Memcached 插件中的堆缓冲区溢出漏洞详解

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 2021年4月,ZDI 收到了一名匿名者提供的关于MySQL 数据库中某漏洞的报告,结果是位于 InnoDB memcached 插件中的基于堆 ...

  5. 浅析缓冲区溢出漏洞的利用与Shellcode编写

    文章目录 前言 汇编语言 寄存器 内存堆栈 CPU指令 函数调用 缓冲区溢出 栈溢出原理 栈溢出攻击 ShellCode 总结 前言 缓冲区溢出(Buffer Overflow)是计算机安全领域内既经 ...

  6. 缓冲区溢出漏洞那些事:C -gets函数

    基本概念 缓冲区是在数据从一个位置传输到另一个位置时临时保存数据的内存存储区域.当数据量超过内存缓冲区的存储容量时,就会发生缓冲区溢出(或缓冲区溢出).结果,试图将数据写入缓冲区的程序会覆盖相邻的内存 ...

  7. php crypt函数缓冲区溢出漏洞,简单缓冲区溢出漏洞攻击实验

    缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回 ...

  8. php crypt函数缓冲区溢出漏洞,GIMP 堆缓冲区溢出漏洞(CVE-2017-17784)

    GIMP 堆缓冲区溢出漏洞(CVE-2017-17784) 发布日期:2018-04-20 更新日期:2018-05-03 受影响系统:GIMP GIMP 2.8.22 描述: BUGTRAQ  ID ...

  9. 分区起始位置参数溢出_IIS6.0缓冲区溢出漏洞深度分析(CVE-2017-7269)

    漏洞描述 开启WebDAV服务的IIS6.0存在缓冲区溢出漏洞可以任意代码执行,目前针对 Windows Server 2003 R2 可以稳定利用.在WebDAV服务的ScStoragePathFr ...

最新文章

  1. POJ1003·Hangover
  2. 将图片序列化和反序列化
  3. pureMVC简单示例及其原理讲解四(Controller层)
  4. JuiceFS 你应该知道的一些事
  5. word2010 同时打开多个文档的解决办法
  6. 软工文档---可行性研究报告
  7. java 拼音模糊查询_java 编写模糊查询
  8. matlab样本标准差,关于样本标准差(SD)与样本标准误差(SE)
  9. C 语言中结构体中成员所占内存的大小
  10. 腾讯云服务器SSH密匙登录教程(创建密匙/关联/登录)
  11. 基于卷积神经网络和小波变换的视频监控中的火灾探测
  12. Warning: [antdv: LocaleProvider] `LocaleProvider` is deprecated. Please use `local
  13. iGuard6.0 — 有序组织的网页防篡改
  14. TF卡里删掉文件后内存没变大_不用第三方,手机自带软件也能清扫内存!教你4个正确清理技巧...
  15. 01、如何用DAP仿真器下载程序
  16. 商城后台管理系统(EasyUI、jQuery、js、Ajax、Servlet、jsp、mysql、EL,导出订单等)
  17. pushplus推送到企业微信机器人教程
  18. 主题模型TopicModel:隐含狄利克雷分布LDA
  19. 安装Python(绿色版)
  20. sql挂起小工具cleanup_又来安利了!我用起来最“顺手”的数据库设计工具

热门文章

  1. 开发自己的安卓APP——悬浮备忘录(使用FloatingWindow)
  2. 工作族必备的备忘录时间管理APP软件
  3. MacOS(苹果电脑苹果系统)连接京瓷300i 打印机
  4. 实时车道线检测算法 | LaneATT-250FPS LSTR-420FPS
  5. 选择设计类培训学校的那些事儿
  6. 最简单完整的libwebsockets的例子
  7. Web标准设计-小苏
  8. 影响产品质量的6方面因素:人、机、料、法、环、测
  9. Java 除以2与向右位移1
  10. el-tree中实现拖拽遇到的问题