Sto tentando di riprodurre l'attacco di Iniezione Byte Null su un modulo di caricamento. Ho questo codice:Iniezione byte nulli in un modulo di caricamento
<?php
if(substr($_FILES['file']['name'], -3) != "php") {
if(move_uploaded_file($_FILES['file']['tmp_name'], $_FILES['file']['name']))
echo '<b>File uploaded</b>';
else
echo '<b>Can not upload</b>';
}
else
echo '<b>This is not a valid file/b>';
?>
Sto cercando di caricare un file denominato come questo: file.php% 00jpg Così sarà bypassare il substr() e saranno caricati come file.php dal move_uploaded_file () dovrebbe fermarsi al byte null (% 00).
Il problema è che il file caricato non è nominato file.php sul server ma file.php% 00jpg (cui si può accedere digitando /file.php%2500jpg nella barra degli indirizzi).
Sembra che move_uploaded_file() non si preoccupi del byte null, quindi come funziona? È possibile caricare un file con estensione .php con il mio pezzo di codice?
Grazie :).
C'è un exploit molto più semplice: un file può essere caricato con una diversa estensione "attiva", come '.cgi', o' .asp' o '.phtml' – duskwuff
L'avvelenamento da byte NULL è stato corretto in PHP' 5.3. 4'. –
** Non utilizzare una lista nera per i caricamenti di file **. Utilizza una whitelist. Inoltre, posso pensare ad alcuni semplici modi per aggirare ciò. Dovresti disinfettare. – Amelia