博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
how2heap-fastbin_dup_consolidate
阅读量:2134 次
发布时间:2019-04-30

本文共 761 字,大约阅读时间需要 2 分钟。

fastbin_dup_consolidate

  • consolidate 过程

    1. 若 get_max_fast() 返回 0,则进行堆的初始化工作,然后进入第 7 步
    2. 从 fastbin 中获取一个空闲 chunk
    3. 尝试向后合并
    4. 若向前相邻 top_chunk,则直接合并到 top_chunk,然后进入第 6 步
    5. 否则尝试向前合并后,插入到 unsorted_bin 中
    6. 获取下一个空闲 chunk,回到第 2 步,直到所有 fastbin 清空后进入第 7 步
    7. 退出函数
  • poc

    a=malloc(x);b=malloc(x);free(a)//a进入fastbin中 c = malloc(0x400)//申请large bin的时候已经执行了malloc_consolidate,使得fastbin中的a放入smallbin中free(a)//并不会报错,因为这个时候a已经被放到了smallbin之中,fastbin中没有a,之后a再次进入fastbin中 //此时的a中信息如下:a.bk->smallbina.fd->0//由于处在fastbin的第一个,所以fd被清空 malloc(x) = a//这时候a中存在smallbin的信息,可以进行泄露malloc(x) = a//可以再次申请,再次得到a
  1. 申请两个fast bin大小的chunka、chunkb,释放chunk a

    在这里插入图片描述

  2. 申请lage bin大小的chunk c,此时会进行malloc_consolidate,将fast bin中的chunk放入small bin,可以泄漏small bin中的信息

    在这里插入图片描述

  3. 此时fast bin中没有bin,可以再次释放chunk a,触发double free

    在这里插入图片描述

  4. 后面的操作,就跟double free 一样利用即可.

转载地址:http://ltugf.baihongyu.com/

你可能感兴趣的文章
用深度神经网络处理NER命名实体识别问题
查看>>
用 RNN 训练语言模型生成文本
查看>>
RNN与机器翻译
查看>>
用 Recursive Neural Networks 得到分析树
查看>>
RNN的高级应用
查看>>
TensorFlow-7-TensorBoard Embedding可视化
查看>>
一个隐马尔科夫模型的应用实例:中文分词
查看>>
轻松看懂机器学习十大常用算法
查看>>
一个框架解决几乎所有机器学习问题
查看>>
特征工程怎么做
查看>>
机器学习算法应用中常用技巧-1
查看>>
机器学习算法应用中常用技巧-2
查看>>
通过一个kaggle实例学习解决机器学习问题
查看>>
决策树的python实现
查看>>
Sklearn 快速入门
查看>>
了解 Sklearn 的数据集
查看>>
用ARIMA模型做需求预测
查看>>
推荐系统
查看>>
详解 TensorBoard-如何调参
查看>>
TensorFlow-11-策略网络
查看>>