C-Style Login — PHP Type Juggling Array Bypass

PHP’s loose comparison treats an array as truthy against any string. Sending password[] as an array in the POST body bypasses the string comparison and grants access.

January 1, 2024 · 1 min · giordii

Click Me — Cookie Integer Forge to Reach Counter Target

The app tracks clicks with an integer cookie. Skip the clicking by setting ‘cookies’ to 10000000 directly and request the page — the server trusts the cookie value and returns the flag.

January 1, 2024 · 1 min · giordii

Confuse Me — PHP Magic Hash 0e MD5 Bypass

PHP’s loose == treats any string starting with ‘0e’ followed by digits as the float 0. Pass a known magic hash input whose MD5 begins with 0e to bypass a hash comparison.

January 1, 2024 · 1 min · giordii

Cookie Monster — Base64 JSON Cookie Role Elevation

The session cookie is a URL-encoded base64 of a JSON string like ‘id-role-username’. Decode it, change the role to 0 and username to admin, re-encode, and access the admin page.

January 1, 2024 · 2 min · giordii

Flags Shop — Price Parameter Tampering

The buy endpoint accepts a ‘costo’ (price) POST parameter from the client. Sending costo=0 purchases the expensive flag item for free.

January 1, 2024 · 1 min · giordii

Headache — Flag in HTTP Response Header

The flag is not in the response body — it is stored in a custom HTTP response header called ‘Flag’. Use a HEAD request and read r.headers[‘Flag’].

January 1, 2024 · 1 min · giordii

I Got Magic — GIF Polyglot Webshell Upload + RCE

Craft a file that is simultaneously a valid GIF (magic bytes GIF89a) and a PHP shell (<?php echo system('cat /flag.txt'); ?>). Upload it via the image upload form, find the timestamped filename in the response, and request that URL to execute the shell.

January 1, 2024 · 2 min · giordii

Just a Reminder — Obfuscated JS Secret Key Recovery

The login form runs client-side JS. Deobfuscating or inspecting it reveals a hardcoded secret key used to AES-decrypt the flag — the key is plaintext at the top of the obfuscated script.

January 1, 2024 · 2 min · giordii

Light or Dark — Path Traversal with Dot Obfuscation + Null Byte

The theme parameter appends .css to the user-supplied path before serving it. Use …/ triples (which reduce to ../) and a URL-encoded null byte to escape the CSS directory and read /flag.txt.

January 1, 2024 · 2 min · giordii

Make a Wish — PHP GET Array Type Coercion Bypass

Pass the GET parameter as an array (?richiesta[]=sas) to make PHP receive an array instead of a string, bypassing the string equality check and revealing the flag.

January 1, 2024 · 1 min · giordii