首页
社区
课程
招聘
[原创]ciscn_2019_final_3题解
发表于: 2020-10-7 21:48 7175

[原创]ciscn_2019_final_3题解

2020-10-7 21:48
7175

题目地址:a6fK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1N6i4g2G2K9W2)9J5k6h3y4F1i4K6u0r3j5$3S2S2L8r3I4W2L8X3N6W2M7#2)9J5x3$3y4A6M7$3y4F1i4K6g2X3x3U0l9I4z5g2)9#2k6X3k6A6L8X3q4D9i4K6g2X3x3H3`.`.

先放exp

首先申请几个 chunk,然后对其中一个 free 两次,因为有 tcache 机制,所以可以 free,且会放在同一个 tcache 链表中 0x555555768e70

image.png

接下来申请回来 0x50,反手把 fd 指针改掉,改成 0x555555768e70-0x11e60=0x555555757010

image.png

一开始没太理解怎么回事,然后我发现在一开始 remove 之后 0x555555757070 这里就有指向第 0 个的指针了,难道这是链表头部?

image.png

一点一点看看,首先是全部申请之后:啥都没有

image.png

对第 0 个 remove 一次之后:出现了第 0 个的地址

image.png

对第 0 个第二次 remove 后:第 0 个的 fd 也指向第 0 个了,合情合理

image.png

然后去 malloc 一个,同时把 fd 指针改成 0x0000555555757010

因为 free 了两次,所以应该还指向第 0 个,但是第 0 个的 fd 指针已经改变了

image.png

然后再去申请一个的话 tcache 就指向更改的那个 0x0000555555757010 了


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

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回