前几天,我们发了一篇 Ubuntu 16.04 配置 pwn 环境的文章,遭到了部分朋友的反感,他们认为我们不应该写这么基础的东西,甚至有几个朋友怒而取关了 其实那篇文章就是为了这个视频来做铺垫的,免得一些兄弟原理懂了,实践不了 所以,如果这个视频有帮助到各位,帮我们转发转发,告知一下取关的几位朋友,都是误会嗷
【B站在线观看】
https://www.bilibili.com/video/BV1uF41177YY?share_source=copy_web
【视频、图示以及文档下载地址】
https://pan.baidu.com/s/1Ps2uKajjLP6s6rqzepZEXw 提取码: 1udc
下面是视频中的 markdown 文档,方便大家学习和复制
堆基础知识
unlink 知识
系统内存分布图
img
img
img
magicheap https://github.com/bash-c/pwn_repo/tree/master/HITCON/hitconTraining_magicheap
/*unlink操作的实质就是:将P所指向的chunk从双向链表中移除,这里BK与FD用作临时变量*/
#define unlink(P, BK, FD) { \
B = P->fd; \
A = P->bk; \
B->bk = A; \
A->fd = B; \
...
}
img
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
我们可以向某一个内存地址写入一些内容
hitconTraining_unlink——bamboobox https://github.com/bash-c/pwn_repo/tree/master/HITCON/hitconTraining_unlink