December 16, 2025

Al Khwarizmi CTF Contest

Writeups from ShibirCTF 2025 covering reverse engineering challenges, steganography, and forensics.

Reverse Engineering

Returing is Hard

Just patching the program to execute the print_flag function was enough.

Slogran of July

Wanna Hang Haxina

Using strings command:

This string appeared twice. So:

The file is a PNG image encrypted with ASCII Shift of +5

try:
    with open("encrypted.file", "rb") as f:
        data = f.read()
    decrypted = bytes([(b - 5) % 256 for b in data])
    with open("flag.png", "wb") as f:
        f.write(decrypted)
    print("Success! Open flag.png to see the image.")
except Exception as e:
    print(e)

That gives an image with the flag:

Steganography

Unlimited Crack

Forensics

Forensics - 1

It said something about digital signature. So I tried it. Took a few attempts:

First thing I did was select all texts with Control+A then made all font color to black:

That gave the first flag: