WEB开发网
开发学院网络安全安全技术 关于MS08-067的一点细节 阅读

关于MS08-067的一点细节

 2008-10-27 13:30:33 来源:WEB开发网   
核心提示: 此时 si = 0x2e 然后前后判断是否是 ..71BAA3638D46 FE LEA EAX,DWORD PTR DS:[ESI-2]71BAA3663BD8CMP EBX,EAX71BAA3680F85 50380200 JNZ NETAPI32.71BCDBBE71BAA36E8D

此时 si = 0x2e 然后前后判断是否是 ..

71BAA363  8D46 FE     LEA EAX,DWORD PTR DS:[ESI-2]
71BAA366  3BD8      CMP EBX,EAX
71BAA368  0F85 50380200  JNZ NETAPI32.71BCDBBE
71BAA36E  8D46 02     LEA EAX,DWORD PTR DS:[ESI+2]
71BAA371  66:8B10     MOV DX,WORD PTR DS:[EAX]
71BAA374  66:83FA 2E   CMP DX,2E
71BAA378  0F85 8A380200  JNZ NETAPI32.71BCDC08
71BAA37E  8D46 04     LEA EAX,DWORD PTR DS:[ESI+4]
71BAA381  66:8B18     MOV BX,WORD PTR DS:[EAX]
71BAA384  66:83FB 5C   CMP BX,5C

second copy 第二个拷贝,把中间的 x.. 弄没了

71BAA388  /0F85 3D380200  JNZ NETAPI32.71BCDBCB
71BAA38E  |85FF      TEST EDI,EDI
71BAA390  |0F84 0B630000  JE NETAPI32.71BB06A1
71BAA396  |50       PUSH EAX
71BAA397  |57       PUSH EDI
71BAA398  |FF15 2C10BA71  CALL DWORD PTR DS:[<&msvcrt.wcscpy>]   ; msvcrt.wcscpy

漏洞代码就是下面这个:

71BCDBDE  8D47 FE     LEA EAX,DWORD PTR DS:[EDI-2]
71BCDBE1  66:8338 5C   CMP WORD PTR DS:[EAX],5C
71BCDBE5  /75 18      JNZ SHORT NETAPI32.71BCDBFF
71BCDBE7  |66:8B38     MOV DI,WORD PTR DS:[EAX]
71BCDBEA  |8B4D 08     MOV ECX,DWORD PTR SS:[EBP+8]
71BCDBED  |66:83EF 5C   SUB DI,5C
71BCDBF1  |66:F7DF     NEG DI
71BCDBF4  |1BFF      SBB EDI,EDI
71BCDBF6  |F7D7      NOT EDI
71BCDBF8  |23F8      AND EDI,EAX
71BCDBFA ^|E9 55C7FDFF   JMP NETAPI32.71BAA354
71BCDBFF  3B45 08     CMP EAX,DWORD PTR SS:[EBP+8]
71BCDC02 ^ 74 E3      JE SHORT NETAPI32.71BCDBE7
71BCDC04  48       DEC EAX
71BCDC05  48       DEC EAX
71BCDC06 ^ EB D9      JMP SHORT NETAPI32.71BCDBE1

试图往栈低址去寻找"",结果错误计算了开始的地址,导致根本找不到。

按照cocoruder的说法,在计算错误后,有机会第二次执行第二个 wcscpy ,从而覆盖那个错误计算出的地址。

不过我没找到能再次执行拷贝的方法,我的整个栈低址几乎就是一片0,每次都上溢了.

有的机器里也许能够找到那个“”吧,或者存在一种能够稳定利用的方法。

使用 pipebrowser 好像也有机会控制EIP,可以继续搞搞。

瞎扯到这里,不说了,大家再一起继续郁闷吧。

上一页  1 2 3 

Tags:关于 MS 一点

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接