文章目录

  • 一、基础知识
  • 二、double free
  • 三、use after free
  • 四、chunk extend
  • 五、相关练习题目

之前没有全面的学习,现在网上资料真是比几年前全面的多了,这里总结回顾一下fastbin attack的原理思路。这里参考的博主链接如下,写的确实很详实
https://blog.csdn.net/Breeze_CAT/article/details/103788698

一、基础知识

需要了解fastbin的分配原理,fastbins是管理在malloc_state结构体重的一串单向链表,分为0x20-0x80总共7个链表:

  • 每次free释放对应大小的堆块,会加入到对应的链表中
  • 每次malloc分配堆块,会从对应大小的链表中分配一个堆块
  • 维护malloc_state遵循后入先出的原则(LIFO)

关于第三条原则,用引用网站的两张图便可以解释清楚

二、double free

double free+fastbin attack的利用场景,通常在对堆块有越界写入的情况下,实现申请任意地址的malloc块
直接用下面的步骤进行举例说明

步骤一:申请两个fastbin大小的堆块1和2,然后分别释放chunk 1和chunk 2,fastbin的链表结构就会如下图

步骤二:通过越界写入,修改chunk1的状态值,使得chunk1能够再次被free,经过第二次free的chunk1后,链表状态如下

具体如何通过越界修改chunk1,我在后面会出一个unlink攻击篇详细介绍

步骤三:malloc一个新的chunk,chunk1被申请

步骤四:修改chunk1的指针指向(目的地址-0x10),然后申请新的chunk,原chunk2被申请

步骤五:申请新的new chunk,此时状态如下

可以看到,只要在申请一个new chunk,就可以申请一个到目标地址的块了,自此实现完毕

三、use after free

我理解的UAF应用场景比double free更广,而且实际是double free的后面几步(不知道自己的理解对不对)

步骤一:申请一个对应fastbin区间内的堆块并释放

步骤二:通过越界写入或者本身的指针操作修改free过的chunk的内容,指向目标地址

后面步骤和doule free一致

四、chunk extend

这个chunk extend大致讲的是通过堆布局或者一字节溢出,修改某个bin的大小,最终导致堆同一堆块内不同地址的操作,具体用一张图可以大致表示出来,详细还是去看原博主的内容把(个人目前没碰到过需要用这种方法的)

五、相关练习题目

  • bugku Baby-heap1

fastbin attack学习总结相关推荐

  1. 好好说话之Fastbin Attack(1):Fastbin Double Free

    好像拖更了好久...实在是抱歉....主要是fastbin attack包含了四个部分,后面的例题不知道都对应着哪个方法,所以做完了例题才回来写博客.fastbin attack应该也会分四篇文章分开 ...

  2. CTF(pwn) Fastbin Attack

    Fastbin Attack Fastbin Double Free 其中linux中会有一个校验对于double free 即会判断当前 fastbin链表的头部,是否和当前释放的fastbin 是 ...

  3. linux堆内存管理深入分析,【技术分享】Linux堆溢出之Fastbin Attack实例详解

    1. 摘要 在近几年各大CTF比赛中,看到有很多次pwn类别题中出现fastbin攻击的情况,例如今年的defcon,RCTF,胖哈勃杯,0CTF final等等 ,fastbin attack是堆漏 ...

  4. 堆漏洞挖掘——fastbin attack漏洞

    一.核心思想 通过fastbins链的管理,达到目标地址(target)读写. 二.原理图解 fastbin存储freechunk的单链表结构: fastbins是如何存取fastchunk的,见文章 ...

  5. fastbin attack攻击中关于 malloc__hook

    概述 在程序中设置钩子,用来在malloc,,对其进行检查,可以看到对应的函数调用后的地址是什么. malloc__hook 也位于libc中的data段 它是一个地址 当调用 malloc 的时候 ...

  6. 网络安全ctf比赛/学习资源整理,解题工具、比赛时间、解题思路、实战靶场、学习路线,推荐收藏!...

    对于想学习或者参加CTF比赛的朋友来说,CTF工具.练习靶场必不可少,今天给大家分享自己收藏的CTF资源,希望能对各位有所帮助. CTF在线工具 首先给大家推荐我自己常用的3个CTF在线工具网站,内容 ...

  7. 好好说话之Tcache Attack(1):tcache基础与tcache poisoning

    进入到了Tcache的部分,我还是觉得有必要多写一写基础的东西.以往的各种攻击手法都是假定没有tcache的,从练习二进制漏洞挖掘的角度来看其实我们一直模拟的都是很老的环境,那么这样一来其实和真正的生 ...

  8. 好好说话之Tcache Attack(3):tcache stashing unlink attack

    tcache stashing unlink attack这种攻击利用有一个稍微绕的点,就是small bin中的空闲块挂进tcache bin这块.弯不大,仔细想想就好了 往期回顾: 好好说话之Tc ...

  9. 好好说话之Tcache Attack(2):tcache dup与tcache house of spirit

    这篇文章介绍了两种tcache的利用方法,tcache dup和tcache house of spirit,两种方法都是用how2heap中的例题作为讲解.由于tcache attack这部分的内容 ...

  10. 【学习笔记】CTF PWN选手的养成(三)

    atum大佬视频的总结 第三章 课时2  堆漏洞的利用技巧 0X01 基础知识 1.操作系统中的内存布局(Linux) 内核空间&用户空间,堆.栈等:cat /proc/pid/maps 要了 ...

最新文章

  1. mSystems:生物地球化学进入病毒时代-采用多样的方法研究病毒和生物地球化学循环...
  2. java 企业付款_java实现微信企业付款到个人功能
  3. Hibernate Shards 数据的水平、垂直切割(二)- Hibernate Shards基本演示
  4. 在servlet中读取初始化参数和上下文参数的方法getServletContext()和getInitParameter()
  5. 瑞士科学家造出了撞不坏的无人机丨Science Robitics
  6. Safari导入Chrome书签
  7. 服务器温度检测软件_科技产品—整机柜服务器—产品简介
  8. 射频识别技术漫谈(23)——ISO15693的载波、调制与编码
  9. matlab解常微分方程——符号解法
  10. JAVA基础--IO流(字节流)
  11. 第一次学游泳技巧_初学者第一次下水需要注意哪些情况,新手学习游泳需要掌握什么技巧,适合的游泳装备有哪些...
  12. 三个案例讲解Lambda表达式
  13. WFP 学习(一)——构架把握
  14. NLP(7): Word Sense Disambiguation and CKY
  15. Codeforces 645B Mischievous Mess Makers【逆序数】
  16. Java虚拟机:Java虚拟机结构
  17. c语言模拟银行ATM的程序,简单模拟银行ATM取款系统 | C/C++程序员之家
  18. java 函数内定义函数_java可以在main中定义函数吗?
  19. 模块电路选型(5)----电机驱动模块
  20. Android Custom

热门文章

  1. 如何爬取豆瓣电影?python十分钟搞定
  2. 如何高效设计游戏——游戏策划的自我修养与心得
  3. python编写年金现值计算函数_养老金中的钱是怎么算出来的?
  4. 《Python数据分析与挖掘实战》第13章——回归+DNN
  5. 做头条问答项目,月入4000元到底有多简单
  6. MapperReducer
  7. python图表导入word_使用python matplotlib 画图导入到word中如何保证分辨率
  8. 雷神战争中简单megetexture地图制作
  9. 多少程序员的梦想职位,成为阿里P7真的就这么难吗-学会这些就够了
  10. 计算机画图软件技巧,CAD绘图技巧(一)—速度篇