Cat GIFs — DalCTF 2026

A PHP upload app re-encodes every GIF through PHP-GD as sanitization but never validates the filename — a payload smuggled inside the GIF color palette survives the re-encode, yielding a GIF/PHP polyglot webshell and RCE.

June 6, 2026 · 8 min · 1621 words · Th3B0yWh0L1v3d

DEAD VAULT — Zer0d4yh31st CTF

A Money Heist–themed Flask app hides a flag split into three fragments behind a server-side URL fetcher, bypassed with a DNS-based SSRF to reach the internal API and a privileged file-read endpoint.

June 6, 2026 · 2 min · 303 words · Th3B0yWh0L1v3d

Expensey Eats — DalCTF 2026

An alg:none JWT forgery grants admin, UNION-based SQLi reveals a hidden $99,999 vault dish, and a broken-authorization order flow lets the admin buy it for free — the flag arrives in a one-time Flask flash message.

June 6, 2026 · 9 min · 1761 words · Th3B0yWh0L1v3d

Heart Part 7 — DalCTF 2026

A Kendrick-themed Flask app chains UNION-based SQLi to leak admin creds, an admin panel exposes an internal cipher microservice, and a Heartbleed-style over-read bleeds the AES-256 master key from heap memory to decrypt the flag.

June 6, 2026 · 7 min · 1325 words · Th3B0yWh0L1v3d

La Casa de Papel (Secure Comms) — Zer0d4yh31st CTF

A Flask/Jinja2 app renders user-supplied names directly into a template, enabling SSTI that dumps os.environ to leak the flag stored as an environment variable.

June 6, 2026 · 2 min · 214 words · Th3B0yWh0L1v3d

SecretPickle — GPN CTF 2026

A Pyodide client serializes requests with pickle obfuscated by a hardcoded XOR key, letting the server pickle.loads attacker data for unauthenticated root RCE, then hooking the live handler to capture the adminbot’s plaintext login password.

June 6, 2026 · 3 min · 501 words · Th3B0yWh0L1v3d

Secure Secretpickle — GPN CTF 2026

The hardened secretpickle runs pickle.loads in a write-only seccomp sandbox, but the adminbot action visits an attacker URL with no scheme check and returns a screenshot, so file:///flag.txt renders the flag into the image.

June 6, 2026 · 3 min · 460 words · Th3B0yWh0L1v3d

SecureForm Admin — DalCTF 2026

A 4-digit PIN with no rate limiting falls to brute force, the dashboard’s ORDER BY sort is blind-SQL-injectable, and the home-made sanitizer only strips ‘<’ — so boolean extraction with ‘>’ dumps the secrets table.

June 6, 2026 · 7 min · 1413 words · Th3B0yWh0L1v3d

Simple Food Notifications — GPN CTF 2026

A Flask meal-notification SSRF whose is_global filter is defeated by abusing urllib3’s retry-driven DNS re-resolution — a global IP that hangs on port 80 (8.8.8.8) outlasts dnsmasq’s 2s cache, so the retry re-resolves to 127.0.0.1 and reaches the localhost-only /vip-meal.

June 6, 2026 · 9 min · 1852 words · Th3B0yWh0L1v3d

Spaetzle — GPN CTF 2026

An MD5-only oracle over arbitrary paths is turned into a full file disclosure using the error-based PHP filter-chain oracle to leak /flag byte-by-byte.

June 6, 2026 · 3 min · 487 words · Th3B0yWh0L1v3d