最近在exploitdb找到了一个利用SEH的漏洞实例,(网址是https://www.exploit-db.com/exploits/44565/,软件和脚本都在里面),就想要自己分析分析,加深一下理解。漏洞标题是Easy MPEG to DVD Burner 1.7.11 SEH Local Buffer Overflow,
软件是Easy MPEG to DVD Burner 1.7.11 ,exploitdb官网上提供了下载链接,根据漏洞利用信息,“# Steps : Open the APP > click on register > Username field > just paste watever generated from python script in the txt file.”,定位到漏洞发生的模块,也就是输入用户名的地方。
首先,我们可以利用SEH机制劫持eip到我们设置的某个地址去执行特定代码,这个地址必须是可以预测的,那么“DLL have ASLR,safeSEH,rebase off”的SkinMagic.dll就成为了我们的目标。当我们成功的劫持了EIP,接下来需要做的,就是如何跳回原来的栈上执行数据了(注意这里没有开启DEP)。那么首先就应该分析此时的堆栈和寄存器环境,想想如何在SkinMagic.dll找到一段代码让自己能够跳回到溢出的栈上。这里先记录下溢出堆栈的范围0x0018A37C~0x0018A770,接下来分析分析之前生成的Evil.txt。