cve-2010-2553 CVDecompress 函数堆溢出漏洞

poc来源为 exploit-db

测试环境为WINDOWS SP3

首先打开windows media player windbg附加

开启页堆 !gflag +hpa

0:011> g
(7f0.2f8): Access violation - code c0000005 (!!! second chance !!!)
eax=00008000 ebx=00132060 ecx=000002a4 edx=027ffd38 esi=00147000 edi=00149000
eip=73b722cc esp=027ffd04 ebp=027ffd30 iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246
iccvid!CVDecompress+0x11e:
73b722cc f3a5            rep movs dword ptr es:[edi],dword ptr [esi]
0:011> kb
ChildEBP RetAddr  Args to Child              
027ffd30 73b7cbf3 00000004 00003731 00000068 iccvid!CVDecompress+0x11e
027ffd60 73b766c8 0012c8d0 00000000 00132530 iccvid!Decompress+0x11d
027ffdac 73b41938 0012c8d0 00000001 0000400d iccvid!DriverProc+0x1bf
027ffdd0 7cf8fa9e 73b5b500 0000400d 027ffde8 MSVFW32!ICSendMessage+0x2b
027ffe00 7cf8f9e9 73b5b500 00000000 00132530 quartz!CVFWDynLink::ICDecompress+0x3e
027ffec0 7cf90a55 01b6c258 01b6a658 00000000 quartz!CAVIDec::Transform+0x282
027ffeec 7cf90939 01b6c258 00000000 01b836d0 quartz!CVideoTransformFilter::Receive+0x110
027fff00 7cf8e67a 01b79c5c 01b6c258 027fff40 quartz!CTransformInputPin::Receive+0x33
027fff10 7cf90ca0 01b6c258 00040103 01b836d0 quartz!CBaseOutputPin::Deliver+0x22
027fff40 7cf90e1c 027fff70 027fff6c 00000000 quartz!CBaseMSRWorker::TryDeliverSample+0x102
027fff84 7cf8ce30 00000000 01b836d0 01b836d0 quartz!CBaseMSRWorker::PushLoop+0x15e
027fff9c 7cf8dbe6 00000000 7cf8a121 00000000 quartz!CBaseMSRWorker::DoRunLoop+0x4a
027fffa4 7cf8a121 00000000 000a0178 027fffec quartz!CBaseMSRWorker::ThreadProc+0x39
027fffb4 7c80b713 01b836d0 00000000 000a0178 quartz!CAMThread::InitialThreadProc+0x15
027fffec 00000000 7cf8a10c 01b836d0 00000000 kernel32!BaseThreadStart+0x37
0:011> ub iccvid!Decompress+0x11d

iccvid!Decompress+0x102:
73b7cbd8 ffb698000000    push    dword ptr [esi+98h]
73b7cbde 57              push    edi
73b7cbdf ff7528          push    dword ptr [ebp+28h]
73b7cbe2 ff752c          push    dword ptr [ebp+2Ch]
73b7cbe5 ff7530          push    dword ptr [ebp+30h]
73b7cbe8 ff7514          push    dword ptr [ebp+14h]
73b7cbeb ff765c          push    dword ptr [esi+5Ch]
73b7cbee e8bb55ffff      call    iccvid!CVDecompress (73b721ae)

73b7cbee e8bb55ffff      call    iccvid!CVDecompress (73b721ae)这个涵数有漏洞

IDA单独查看该函数  进行详细分析

时间: 2024-10-07 06:54:19

cve-2010-2553 CVDecompress 函数堆溢出漏洞的相关文章

Windows堆溢出漏洞简单总结

堆溢出漏洞的利用难度比栈溢出利用要大的多,每个不同的漏洞可能综合利用不同的技术.堆溢出漏洞的根源也是没有正确的使用非安全函数(这里是微软禁用的非安全函数),导致用户输入的数据覆盖掉其它内存地址.而我们的利用步骤也是通过覆盖可用内存数据,从而控制EIP.在这篇文章里

转:利用一个堆溢出漏洞实现VMware虚拟机逃逸

转:https://zhuanlan.zhihu.com/p/27733895?utm_source=tuicool&utm_medium=referral 利用一个堆溢出漏洞实现VMware虚拟机逃逸 [作者:李小龙(acez),中文翻译:kelwin] 1. 介绍 2017年3月,长亭安全研究实验室(Chaitin Security Research Lab)参加了Pwn2Own黑客大赛,我作为团队的一员,一直专注于VMware Workstation Pro的破解,并成功在赛前完成了一个虚

Linux堆溢出漏洞利用之unlink

Linux堆溢出漏洞利用之unlink 作者:走位@阿里聚安全 0 前言 之前我们深入了解了glibc malloc的运行机制(文章链接请看文末▼),下面就让我们开始真正的堆溢出漏洞利用学习吧.说实话,写这类文章,我是比较怂的,因为我当前从事的工作跟漏洞挖掘完全无关,学习这部分知识也纯粹是个人爱好,于周末无聊时打发下时间,甚至我最初的目标也仅仅是能快速看懂.复现各种漏洞利用POC而已-鉴于此,后续的文章大致会由两种内容构成:1)各种相关文章的总结,再提炼:2)某些好文章的翻译及拓展.本文两者皆有

【转载】利用一个堆溢出漏洞实现 VMware 虚拟机逃逸

1. 介绍 2017年3月,长亭安全研究实验室(Chaitin Security Research Lab)参加了 Pwn2Own 黑客大赛,我作为团队的一员,一直专注于 VMware Workstation Pro 的破解,并成功在赛前完成了一个虚拟机逃逸的漏洞利用.(很不)幸运的是,就在 Pwn2Own 比赛的前一天(3月14日),VMware 发布了一个新的版本,其中修复了我们所利用的漏洞.在本文中,我会介绍我们从发现漏洞到完成利用的整个过程.感谢@kelwin 在实现漏洞利用过程中给予的

Java运行时环境JPEGImageWriter.writeImage函数整数溢出漏洞_

在使用PDFBOX的接口,代码如下: PDFImageWriter imageWriter = new PDFImageWriter(); imageWriter.writeImage(pdDoc, imageType, null, startPage, endPage, imageFilePath, 1, Constants.NUM_TWO_HUNDRED),发现图片生成了,但是报内存溢出错误.后面看了下源代码搜寻相关资料发现存在这样一个问题,所以更换JDK就OK了. Java运行时环境的JP

Linux 堆溢出原理分析

堆溢出与堆的内存布局有关,要搞明白堆溢出,首先要清楚的是malloc()分配的堆内存布局是什么样子,free()操作后又变成什么样子. 解决第一个问题:通过malloc()分配的堆内存,如何布局? 上图就是malloc()分配两块内存的情形. 其中mem指针指向的是malloc()返回的地址,pre_size与size都是4字节数据,size存放当前chunk(内存块,本文均不翻译)大小,pre_size存放上一个chunk大小. 因为malloc实现分配的内存空间是8字节对齐的,所以size的

《黑客攻防-系统实战》--堆溢出

参考文献 <系统攻防技术-系统实战> https://bbs.pediy.com/thread-217613.htm https://www.cnblogs.com/gm-201705/p/9901548.html 一.  堆是什么? 程序运行过程中,需要更多的内存时,如果使用brk() 和 mmap() 进行处理,效率不高而且比较复杂,因此当程序需要分配或释放内存的时候,libc 为程序员提供malloc(), remalloc() 和 free(). 在接到请求时(例如用户请求1024个字

践踏堆栈-缓冲区溢出漏洞

践踏堆栈-缓冲区溢出漏洞 打算写这篇文章是因为在网上看过一篇论文,讲了缓冲区溢出破坏堆栈来执行恶意程序的漏洞.该论文请见参考资料1.这篇文章会涉及一些汇编的基础知识,以及虚拟内存的一些基本概念等.当然用来调试程序的系统是linux,工具是gcc.很久没有看过汇编和C语言了,错漏之处,还请指正. 1.概要 文章标题有提到堆栈和缓冲区,那么就先来探讨下这几个名词的定义.这里的缓冲区,指的就是计算机内一块连续的内存区域,可以保存相同数据类型的多个实例.C程序员最常见的缓冲区就是字符数组了.与C语言中其

PCMan FTP Server缓冲区溢出漏洞分析与利用

简要介绍 这个软件是台湾国立阳明大学医学系的一个学生在大四的时候写的,这个漏洞是有CVE的(CVE-2013-4730),软件应该还挺普及的,这是一个缓冲区溢出漏洞 具体exp可以点这里 实验用poc(其实这里直接对USER命令溢出都是可以的,即不用知道账号密码即可远程代码执行,USER命令的buf距离返回地址是2000) import socket as s from sys import argv # if(len(argv) != 4): print "USAGE: %s host <