-
-
[求助]溢出文档无法溢出的问题
-
发表于:
2013-3-7 17:12
21319
-
一、问题表现形式:
溢出文档(测试环境:xp sp2 32位 + ms office 2003):
方式1:输入命令C:\E11714F04618FB8846BDF384B7704366.doc,文档能溢出。
方式2:输入命令"C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE" /n /dde C:\E11714F04618FB8846BDF384B7704366.doc,则不会溢出,去掉/n /dde参数一样。
二、问题本质:
在C/C++代码中:
用ShellExecute启动溢出文档进程,效果同方式1。
用CreateProcess启动溢出文档进程,效果同方式2。
但无论ShellExecute,还是CreateProcess,最终都会调用CreateProcessInternalW。
注:当lpVerb的值为NULL或"open"时,ShellExecute最终会调用CreateProcessInternalW
三、究其原因:
由于对OD和IDA不够熟练,因此探索原因的过程变得极其艰难。
从最后得到的CreateProcessInternalW的参数信息来看,在做到两种方式的参数信息无区别的情况下,效果还是不一样
。
试图探索,无奈水平着实有限,下面是我找到的原因(不一定对)
以CreateProcess方式打开溢出样本无法溢出的原因如图,图中地址0x275C8952处访问违规,文档在此处退出,应该就是导致无法溢出的直接原因。
问题来了,那为何以ShellExecute打开此文档,此地址就没违规,百思不得其解。
求高人解答...
以下是对应的溢出文档。
E11714F04618FB8846BDF384B7704366.doc
注:此样本溢出体现形式:启动菜单下产生一个"update.exe"并启动,产生并打开一个"通知.doc"。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课