L'iniezione di byte nulli in PHP riguarda il modo in cui i byte null vengono gestiti nelle operazioni del filesystem. Se un utente malintenzionato può iniettare un byte null in un percorso file, la funzione C sottostante ignora qualsiasi cosa dopo il carattere dannoso. Questo può essere usato per bypassare vincoli come l'estensione del file previsto.
Il seguente esempio è di php.net:
<?php
$file = $_GET['file']; // "../../etc/passwd<?php
$file = $_GET['file']; // "../../etc/passwd%pre%"
if (file_exists('/home/wwwrun/'.$file.'.php')) {
// file_exists will return true as the file /home/wwwrun/../../etc/passwd exists
include '/home/wwwrun/'.$file.'.php';
// the file /etc/passwd will be included
}
?>
"
if (file_exists('/home/wwwrun/'.$file.'.php')) {
// file_exists will return true as the file /home/wwwrun/../../etc/passwd exists
include '/home/wwwrun/'.$file.'.php';
// the file /etc/passwd will be included
}
?>
link
In questo caso, l'estensione '.php' verrà ignorata durante le operazioni sui file se l'utente invia un carattere null alla fine del parametro file. Combinato con una stringa di attraversamento di directory, consente all'utente malintenzionato di "includere" file arbitrari che verranno divulgati.