Boxoft WAV to MP3 Converter 1.1 漏洞分析及利用[SEH]

本文详细介绍了Boxoft WAV to MP3 Converter 1.1的栈溢出漏洞,分析了漏洞成因——在字符串拷贝时未检查长度,导致栈溢出。利用过程中,通过mona工具找到测试字符和触发漏洞的偏移,发现溢出覆盖了SEH链表,需利用"pop pop ret"跳板指令。PoC采用Python实现,但由于ShellCode长度限制,最大长度为359字节。利用技巧包括利用MessageBox函数辅助实现跳板指令。
摘要由CSDN通过智能技术生成

1.软件简介

BoxSoft WAV to MP3 Converter是一个100%免费功能强大的音频转换工具,可以批量的把WAV格式文件转换成高质量的MP3音频文件,它配备了标准的音频编码器,你可以设置比特率和一次转换多个音频文件,另一个方便的特性是可以设置热点目录,在wav转MP3时自动把文件写入该目录进行监视。
测试平台:Microsoft Windows 7 SP3 (中文版)

2.漏洞成因

由于在拷贝字符串的时候,没有的对长度进行检测,导致栈溢出.
这里写图片描述

3.利用过程

3.1 使用mona生成测试字符,构造aiff文件 .观察异常偏移.

这里写图片描述

3.2 通过mona确定漏洞触发偏移.

由图可以知道,漏洞触发点在4136偏移处.

3.3 根据跟踪我们可以发现,因为覆盖了SEH链表,导致程序崩溃.

这里写图片描述
这里写图片描述
因此我们需要跳板指令 “pop pop ret ”.为什么需要跳板指令呢?
我们看一下异常处理函数handler4的原型:

EXCEPTION_DISPOSITION __cdecl
_except_handler4(
    IN struct _EXCEPTION_RECORD *ExceptionRecord,
    IN PVOID EstablisherFrame,       //指向下一个SEH处理函数的指针 next  seh
    IN OUT struct _CONTEXT *ContextRecord,
    IN OUT PVOID DispatcherContext
    );

而调用这个函数的起始位置,栈中分布应该是这样的:
这里写图片描述
如果我们得到了EstablisherFrame的值,那么我们也就得到了我们的溢出数据在栈中的地址.根据这个我们就可以确定我们ShellCode的相对布局.如图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值