Winamp 栈溢出分析及利用漏洞预警 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    Winamp是一个比较老的播放器,这里主要是通过winamp的一个poc分析,构造一个exp,

Winamp 栈溢出分析及利用漏洞预警

。主程序见附件winamp.exe, poc见附件poc.m3u。

    一、 Poc 分析

    首先查看poc如下。发现除了前10多个字节为m3u文件格式规定内容外,其它部分均为A。

   

    运行winamp.exe程序,将poc.m3u拖入主界面中,程序直接崩溃。为了查看崩溃时状态,我们将windbg设置为即时调试器。设置在cmd中使用命令:

windbg –I

    再次运行poc,自动弹出windbg,发现崩溃状态:

   

    出现异常,主要是esi+4不可写,修改esi=0045000,命令为:

r @esi=00445000

    继续运行,停至

   

    eax为41414141,[Eax+0c]处也不可读,且经分析,必须[eax+0c]的第5位为1,程序才会运行至strcpy处,所以修改eax=12c238

   

   

    继续运行,发现程序运行至41414141,这样我们就完全控制了程序的执行,

电脑资料

Winamp 栈溢出分析及利用漏洞预警》(https://www.unjs.com)。

   

    二、定位异常

    通过构造一个特殊的poc来定位:

   

定位结果如下:

    esi=eax=306a4139, 程序最后的eip=6141326a

    在poc文件中搜索

   

   

    可知要绕过异常: 0x11e处的4字节 data需要满足:

    [data+4]可读

    且Byte ptr[data+c] 第5字节为1

    最后选择了一个满足条件的data:719f7bf0

   

    程序覆盖点在0×126处,此处存放jmp esp的地址(这里用7ffa4512,这是个比较通用的jmp esp地址)。

    三、构造 exp

    完整的exp构造见附件。主要包括4字节绕过异常放在0x11e处,0×126处放jmp esp指令地址,shellcode放在0x12a开始处。

   

    测试:(环境xp sp3)

    结果:能成功弹出计算器

    附件下载地址: http://pan.baidu.com/s/1sjoCWMx

    ​

最新文章