本帖为笔者日常学习笔记,如有错误,希望大佬指点。
主要问题是mso.dll的一处栈溢出漏洞
首先windbg载入rtf程序文件之后,发现了错误点
之后查看栈回溯,可以看到上一层是mso!Ordinal753+0x306e处,通过找到第一个call进行下断点30f4cc5d
成功到达30f4cc5d里面
接下来单步跟踪到溢出点,发现esi里面的内容好像有点意思了
之后将msf.rtf里面内容全改成11111111..,现在可以发现esi里面就是rtf文件里面的内容
OD附加分析,直接跳到rep指令处,可以看到edi与ebp +0x14处就是返回地址
继续跟到ret处,当到ret 14的时候,就会跳转到jmp esp,(我自己找的跳板)
此时相隔0X18处,就是shellcode,而现在已经定位到自己找的jmp
esp指令了,所以可以直接跳到shellcode
最后成功执行shellcode
0XF4CB39处,如果跟进30F4CE43函数后会报以下错误,但是在0XF4CB26处有判断,ZF=1则可以让je跳转,跳过30F4CE43函数执行后面指令。
如果正常进入30F4CE43函数,就会崩溃
解决思路:在0xF4CB26处 ebp+0X10与ebx进行比较,正常执行流程ebp+0X10为shellcode内容,这样当cmp比较之后,后续指令je不会进行跳转,则会进入到30F4CE43函数报错,那么我们只需要将ebp+0X10处改为0即可,这样je跳转就能跳过不执行30F4CE43函数。
快速定位ebp+0X10的位置,首先将rtf按照如下方法更改
之后断点直接跑过来,55555555这段就是ebp+10的地方,所以将此地方改成00000000即可
操作系统:Windows XP SP3
漏洞软件:Office Word
2003
SP3版本
漏洞文件:使用MSF搜索该漏洞,可直接生成rtf漏洞文件
操作系统:Windows XP SP3
漏洞软件:Office Word
2003
SP3版本
漏洞文件:使用MSF搜索该漏洞,可直接生成rtf漏洞文件
mso!Ordinal6426
+
0x64d
:
30e9eb88
f3a5 rep movs dword ptr es:[edi],dword ptr [esi]
0
:
000
> kb
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information
not
available. Following frames may be wrong.
0012a2bc
30f4cdbd
0012a428
00000000
ffffffff mso!Ordinal6426
+
0x64d
0012a2ec
30f4a597
0012a474
0012a428
00000000
mso!Ordinal753
+
0x306e
0012a538
30d4b199
00000000
0012a578
00000000
mso!Ordinal753
+
0x848
0012a560
30d4b148
30d4ae32
00f110d8
00f11110
mso!Ordinal4196
+
0x61f
0012a564
30d4ae32
00f110d8
00f11110
00f10fc0
mso!Ordinal4196
+
0x5ce
0012a568
00f110d8
00f11110
00f10fc0
30dc9d44
mso!Ordinal4196
+
0x2b8
0012a56c
00f11110
00f10fc0
30dc9d44
00000000
0xf110d8
0012a570
00f10fc0
30dc9d44
00000000
00f10d28
0xf11110
0012a574
30dc9d44
00000000
00f10d28
0012b324
0xf10fc0
0012a578
00000000
00f10d28
0012b324
00000000
mso!Ordinal2940
+
0x158fc
0
:
000
> ub mso!Ordinal753
+
0x306e
mso!Ordinal753
+
0x305a
:
30f4cda9
23c1
and
eax,ecx
30f4cdab
50
push eax
30f4cdac
8d47ff
lea eax,[edi
-
1
]
30f4cdaf
50
push eax
30f4cdb0
8b4508
mov eax,dword ptr [ebp
+
8
]
30f4cdb3
6a00
push
0
30f4cdb5
ff750c push dword ptr [ebp
+
0Ch
]
30f4cdb8
e8a0feffff call mso!Ordinal753
+
0x2f0e
(
30f4cc5d
)
mso!Ordinal6426
+
0x64d
:
30e9eb88
f3a5 rep movs dword ptr es:[edi],dword ptr [esi]
0
:
000
> kb
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information
not
available. Following frames may be wrong.
0012a2bc
30f4cdbd
0012a428
00000000
ffffffff mso!Ordinal6426
+
0x64d
0012a2ec
30f4a597
0012a474
0012a428
00000000
mso!Ordinal753
+
0x306e
0012a538
30d4b199
00000000
0012a578
00000000
mso!Ordinal753
+
0x848
0012a560
30d4b148
30d4ae32
00f110d8
00f11110
mso!Ordinal4196
+
0x61f
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!