1.软件简介
BoxSoft WAV to MP3 Converter是一个100%免费功能强大的音频转换工具,可以批量的把WAV格式文件转换成高质量的MP3音频文件,它配备了标准的音频编码器,你可以设置比特率和一次转换多个音频文件,另一个方便的特性是可以设置热点目录,在wav转MP3时自动把文件写入该目录进行监视。
测试平台:Microsoft Windows 7 SP3 (中文版)
2.漏洞成因
由于在拷贝字符串的时候,没有的对长度进行检测,导致栈溢出.
3.利用过程
3.1 使用mona生成测试字符,构造aiff文件 .观察异常偏移.
3.2 通过mona确定漏洞触发偏移.
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的相对布局.如图: