漏洞简介
在读取m3u文件内容未对内容长度进行有效性判断
m3u文件简介
他其实是播放列表文件
储存着那个音视频文件的名称和路径而已
漏洞原理及利用分析
先以文本打开exp看看
打开看看,暴风关闭了,但没发生啥,看了下,原来没放在根目录
放根目录,打开果然弹计算器了
分析文件型的,一般以ReadFile函数作为第一个断点
但这里比较特殊,播放器打开文件肯定对文件的扩展名进行检测
我们直接在程序中找m3u字符串就行了
401000处查找字符串,查找到后再搜索一下就行了
打开exp,断下
继续单步,执行到下面,弹出计算器
从载入,跟进去这个call,继续单步
就不截图了
02C64045 E8 89F8FEFF call MediaLib.02C538D3
继续跟进
循环第二次的时候下面的会崩
02C5398F FF50 04 call dword ptr ds:[eax+0x4]
继续,跟进,单步就发现可以的地方
执行完strcat,栈上的seh和返回地址等都被覆盖了
我们在异常处理程序处下断
单步发现时下面这个函数触发了读取异常
里面这里触发了异常
覆盖的seh程序地址实际相当于一个小组件
控制权给到栈上
之后就执行shellcode咯
最后还是看看ida吧
扩展名
接下来这个函数触发了异常
在里面触发异常
而且还没打开poc那个地址就是不能读取的地址了
看看异常时作者故意触发的吗
我新建了m3u文件,就只有一点A,不会溢出
发现核心是下面这个跳转跳过异常发生代码
还是通过栈上的数据才能触发异常啊
这个作者省略了,没说哦