堆溢出 —— unlink | PWN
前几天,我们发了一篇 Ubuntu 16.04 配置 pwn 环境的文章,遭到了部分朋友的反感,他们认为我们不应该写这么基础的东西,甚至有几个朋友怒而取关了
其实那篇文章就是为了这个视频来做铺垫的,免得一些兄弟原理懂了,实践不了
所以,如果这个视频有帮助到各位,帮我们转发转发,告知一下取关的几位朋友,都是误会嗷
【B站在线观看】
https://www.bilibili.com/video/BV1uF41177YY?share_source=copy_web
【视频、图示以及文档下载地址】
https://pan.baidu.com/s/1Ps2uKajjLP6s6rqzepZEXw 提取码: 1udc
下面是视频中的 markdown 文档,方便大家学习和复制
unlink 漏洞
堆基础知识
Linux堆内存管理深入分析上
https://introspelliam.github.io/2017/09/10/pwn/Linux%E5%A0%86%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%E6%B7%B1%E5%85%A5%E5%88%86%E6%9E%90%E4%B8%8A/
Linux堆内存管理深入分析下
https://introspelliam.github.io/2017/09/15/pwn/Linux%E5%A0%86%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%E6%B7%B1%E5%85%A5%E5%88%86%E6%9E%90%E4%B8%8B/
unlink 知识
wooyun-drops_Linux堆溢出漏洞利用之unlink
https://wooyun.js.org/drops/Linux%E5%A0%86%E6%BA%A2%E5%87%BA%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8%E4%B9%8Bunlink.html
wooyun-drops_堆溢出的unlink利用方法
https://wooyun.js.org/drops/%E5%A0%86%E6%BA%A2%E5%87%BA%E7%9A%84unlink%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95.html
ctf-wiki_unlink
https://ctf-wiki.org/pwn/linux/user-mode/heap/ptmalloc2/implementation/basic/?h=unlink#unlink
[Unlink] 2014-HITCON-stkof | LiuLian
http://liul14n.top/2020/02/03/Unlink-2014-HITCON-stkof/
内存分布图
malloc & mmap
free
chunk 的结构
allocated chunk;
free chunk;
bins
fastbins 0x10-0x80 bins unsorted bins small bins large bins
感受 bins
magicheap
https://github.com/bash-c/pwn_repo/tree/master/HITCON/hitconTraining_magicheap
fastbins 范围 small bins large bins free_unlink unsortedbins fd bk top_chunk
unlink
/*unlink操作的实质就是:将P所指向的chunk从双向链表中移除,这里BK与FD用作临时变量*/
#define unlink(P, BK, FD) { \
B = P->fd; \
A = P->bk; \
B->bk = A; \
A->fd = B; \
...
}
unlink 问题分析
glibc 无法识别 chunk 结构
B->bk != P || A->fd != P
P -> fd = *P - 0x18
P -> bk = *P - 0x10
B -> bk = *P - 0x18 + 0x18 = *P
A -> fd = *P - 0x10 + 0x10 = *P
B = P->fd; \
A = P->bk;
B->bk = A; \
*P = *P - 0x10
A->fd = B;
*P = *P - 0x18
unlink 漏洞结果
我们可以向某一个内存地址写入一些内容
解决一些问题
伪造fd, bk *P 0x6020c8 system() 的地址 通过show函数来获取
例题
hitconTraining_unlink——bamboobox
https://github.com/bash-c/pwn_repo/tree/master/HITCON/hitconTraining_unlink
往期文章
2022 年 Ubuntu 16.04 配置 pwn 环境的一些小问题