首页
社区
课程
招聘
[原创]#30天写作挑战#Tcache Attack原理学习
发表于: 2020-9-8 10:00 19272

[原创]#30天写作挑战#Tcache Attack原理学习

2020-9-8 10:00
19272

ubuntu 18.04 下测试

源码看不动,说一下通过实验得到的:

同一大小的 chunk free 之后前 7 个会放到一个 tcache 链表里面,不同大小的放在不同的链表中


image.png


最大能放 0x408 的,再大就要按照原本的那样放到 unsortedbin 中了


image.png


程序再次申请内存块的时候首先判断在 tchche 中是否存在,如果存在的话会先从 tcache 中拿

gcc -g tcache_dup.c

运行之后的结果:


image.png


一开始申请了 0x8 大小的 chunk,后来 free了两次


image.png


然后再去申请的话也会申请这俩在 tcache 中的,所以后面输出的 malloc 的地址还是一样的

首先取了一个数组


image.png


然后把数组的 index1 改成了 0x40(chunk 的大小)


image.png


然后把数组的 index2 的地址赋给了 a,之后去 free a,再去申请回来的话就会把 a 申请回来,这样就申请了 fake chunks[2] 那里


image.png

程序首先定义了一个变量,我们想要做的就是让程序 malloc 到变量那里

malloc 两个 chunk,然后 free 掉,这时候链表及内存布局是这样的


image.png


image.png


然后把 b 的 fd 指针改成那个变量地址


image.png


这时候 tcache 的链表是这样的


image.png



[培训]科锐逆向工程师培训第53期2025年7月8日开班!

最后于 2020-9-8 12:09 被yichen115编辑 ,原因: 加参考链接
收藏
免费 1
支持
分享
最新回复 (5)
雪    币: 15661
活跃值: (18963)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
2
mark,这是不是GitHub上的how2heap项目?
2020-9-8 10:44
0
雪    币: 1198
活跃值: (14965)
能力值: ( LV13,RANK:606 )
在线值:
发帖
回帖
粉丝
3
pureGavin mark,这是不是GitHub上的how2heap项目?
是的源码稍微翻译了一下
2020-9-8 10:53
0
雪    币: 15661
活跃值: (18963)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
4
yichen115 是的源码稍微翻译了一下[em_79]
希望楼主能在文章结尾把GitHub项目的URL ,方便学习
2020-9-8 11:11
0
雪    币: 42927
活跃值: (65707)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
5

感谢分享!

欢迎更多的小伙伴参与到 #30天写作挑战#中来!活动详情:https://bbs.pediy.com/thread-261705.htm


2020-9-9 10:20
0
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6

 smallbin双链表是沿着bk来取的,tcache是沿着fd来取的?所以顺序是相反的对吗?


2021-7-4 18:12
0
游客
登录 | 注册 方可回帖
返回