| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 安全365社区 |
安全365
收藏本站
设为首页
会员登录:
站内搜索: 新闻中心 系统安全 网络安全 安全技术 下载中心
| 系统安全首页 | 漏洞分析 | 入侵检测 | 升级补丁 | 安全配置 |
ZDI-08-009 这个怪异的漏洞
ZDI-08-009 这个怪异的漏洞
作者:int3 文章来源:int3的空间 点击数: 更新时间:2008-3-25 9:40:47

  这个漏洞其实很简单,超长key name就能导致一个stack overflow,但是为啥javaws.exe不crash呢,于是参照ZDI-08-010仔细分析了一下这个漏洞

  漏洞是这样的,汇编代码我就不全帖了,帖一个关键处的代码:

  .text:00406B9F ; ---------------------------------------------------------------------------

  .text:00406B9F

  .text:00406B9F loc_406B9F: ; CODE XREF: sub_406A51+B5 j

  .text:00406B9F ; sub_406A51+D2 j ...

  .text:00406B9F mov [ebp+edi+68h+var_50], cl

  .text:00406BA3 inc edi

  .text:00406BA4

  .text:00406BA4 loc_406BA4: ; CODE XREF: sub_406A51+121 j

  .text:00406BA4 ; sub_406A51+14C j

  .text:00406BA4 mov [ebp+edi+68h+var_50], 0

  .text:00406BA9

  .text:00406BA9 loc_406BA9: ; CODE XREF: sub_406A51+63 j

  .text:00406BA9 ; sub_406A51+6C j ...

  .text:00406BA9 mov edx, [ebp+68h+var_10]

  .text:00406BAC inc edx

  .text:00406BAD cmp edx, [ebp+68h+arg_8]

  .text:00406BB0 mov [ebp+68h+var_10], edx

  .text:00406BB3 jl loc_406AA9

  .text:00406BB9 jmp loc_406A93

  伪C代码应该是这样的:

  for (int i = 5; i < strlen(lpszSrc); i ++)

  {

  buff[i] = lpszSrc[i];

  buff[i + 1] = 0x00;

  }

  但是当时的stack layout其实是这样的:

  | Buffer (0x90 bytes)| i | saved EBP | saved EIP|

  当你输入超长数据把i这个值覆盖的话,就会导致i这个值大于strlen(lpszSrc),这样你还没能够覆盖到函数的返回地址的时候这个for循环就退出了。

  目前还不清楚key name中能否包含0的数据,如果可以就把这个i覆盖成一个较小的值就可以了,否则你就要构造一个几十Mb的文件拉。

文章录入:小张    责任编辑:小张 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    利用输入法漏洞轻松破解
    一招病毒木马拒之门外
    注册表禁用DOS窗口来保系
    帮你完成系统安全操作 x
    保障Linux系统安全的九大
    系统安全之注册表修复不
    向着最安全的系统前进!
    Sun Solaris 系统安全加
    Windows系统安全从定制I
    关于国内UNIX主机常见安
    站长邮箱:webmaster@anquan365.com
    联系电话:86-10-67634029 点击这里给我发消息

    Copyright © 2006-2008 www.anquan365.com 北京华安普特网络科技有限公司 版权所有