È un carattere null byte .
Viene utilizzato se il codice aggiunge sempre un'estensione al file incluso. Ad esempio, se il codice è
<?php
include($_GET['lang'].".php");
?>
Tuttavia, l'utente malintenzionato desidera leggere ../../etc/passwd
utilizzando l'LFI. Se si utilizza il carattere null byte, è possibile aggiungerlo all'URL della richiesta come %00
:
www.example.com/index.php?lang=../../etc/passwd%00
Questo farà arrestare il processore PHP al byte null e includere il file ../../etc/passwd
piuttosto che il percorso ../../etc/passwd.php
che non funzionerà a causa dell'estensione. Quindi, in sintesi, dà all'attaccante un modo per troncare il percorso in un dato punto e rimuovere qualsiasi estensione indesiderata.
Riguardo la codifica base64 - questo potrebbe essere quello di impedire che il byte null venga "perso" durante il transito. Se si utilizza un meccanismo per trasferire l'URL altrove, il software utilizzato potrebbe terminare la stringa al byte null e questo verrebbe rimosso dall'URL. Un esempio è se si incolla un URL in Firefox, spesso la stringa viene terminata sul byte null e la richiesta di pagina quando eseguita non include il carattere null byte.