prévenir
N'utilisez pas le contenu mentionné dans cet article pour enfreindre la loi .
Cet article ne donne aucune garantie
1. Présentation de la vulnérabilité
Une "condition de concurrence" se produit lorsque plusieurs threads accèdent au même code partagé, variable, fichier, etc. en même temps sans verrouillage ni synchronisation.
Deuxièmement, le code utilisé dans l'expérience
<?php
$filename = $_FILES['file']['name'];
$chuhe = substr($filename,strrpos($filename,'.')+1);
$path = 'uploads/' . $filename;
$tmp = $_FILES['file']['tmp_name'];
if(move_uploaded_file($tmp,$path)){
if(!preg_match('/php/i',$chuhe)){
echo 'upload success,file in ' . $path;
}else{
unlink($path);
die("can't upload php file!");
}
}else{
die('upload error!');
}
?>
Un code de téléchargement très simple. Comme vous pouvez le voir dans le code, le fichier téléchargé sera d'abord enregistré dans le répertoire de téléchargement, puis il sera jugé si le suffixe du fichier téléchargé contient php. Si c'est le cas, le fichier téléchargé sera être supprimé.
Il semble qu'il n'y ait pas de problème, mais il y a en fait une vulnérabilité de condition de concurrence ici.
même si