首页
社区
课程
招聘
[原创]再发个飞秋Bug
发表于: 2011-12-8 18:02 7549

[原创]再发个飞秋Bug

2011-12-8 18:02
7549

上次发了那个0day以后就休息了一段时间,但是最近感觉到自己对UDP2425的recvfrom的挖掘工作还没有弄完,因为在sub_49C940函数中有污染数据外流,而外流是通过第二个参数:

但是通过分析发现外流的数据比较分散,进行静态反汇编挖掘可能比较麻烦。

而且自己的fuzz一直都是存在于理论阶段,所以使用fuzz对其进行分析,最后发现发送下面的POC时程序崩溃掉了:
1_lbt4_35#128#6CF04987CC1A#1528#22603#0#2.5a:1323191146:admin:XXCCLI-A10D5C26:0198

Python程序代码:


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 6
支持
分享
最新回复 (4)
雪    币: 22
活跃值: (868)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
好像不能利用啊。
另外,这条信息是什么意思呢?
2011-12-8 23:29
0
雪    币: 180
活跃值: (1313)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3
我初步看来一下,是可以利用的,只是有点麻烦。
上次没有说明什么时候出现崩溃,那是当我fuzz到后面的数据位:0198时就崩溃,正常是:0的没有198,我通过查看崩溃的原因,结果发现是可以利用的:

这是进行数据转换,并保存,下图0053CA89 mov     esi, [ebp+0A4h]开始读取。

可以发现我们能过控制jmp     ds:off_53D2D8[ecx*4]中得ECX,所以我们能够控制的范围为:
0x53D2D8-->53D2D8+0xff+4
只要在里面找到能过一些有效的指令,我想应该是可以控制跳到我的的数据的。

分析不对的地方,请个位指教,谢谢!
上传的附件:
2011-12-9 09:38
0
雪    币: 22
活跃值: (868)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
如何在内存DS:[0053D3CD]=0B
这段地址写呢?
EDI+53D308=0053D3CD

这个地址不可控啊。

0053CAA7  |. 8A8F 08D35300  MOV CL,BYTE PTR DS:[EDI+53D308]
0053CAAD  |. FF248D D8D2530>JMP DWORD PTR DS:[ECX*4+53D2D8]
0053CAB4  |> 8B8424 B400000>MOV EAX,DWORD PTR SS:[ESP+B4]            ;  Case 1 of switch 0053CA96
2011-12-9 19:47
0
雪    币: 94
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
楼主是怎么实现污点追踪的,用PIN或者Dynamorio做的插件吗?
2011-12-27 20:53
0
游客
登录 | 注册 方可回帖
返回
//