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

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

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

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

Shell's Revenge — GIF Polyglot PHP Webshell Upload

Upload a file starting with the GIF89a magic bytes followed by a PHP shell. The server validates MIME type from the header but saves the file where PHP can execute it. Access the uploaded file URL to run arbitrary commands.

January 1, 2024 · 2 min · giordii

Shell's Revenge 2 — GIF Polyglot Webshell via LFI Include

Upload a GIF polyglot containing a PHP shell, then trigger its execution through a local file inclusion vulnerable ?page= parameter that includes the uploaded file path.

January 1, 2024 · 2 min · giordii