En PHP, la fonction strcmp($a, $b) compare deux chaînes de caractères.
Le code vulnérable ressemble souvent à ça :
Si on envoie un Tableau (Array) au lieu d'une chaîne à strcmp(), la fonction ne sait pas quoi faire et retourne NULL (avec un Warning).
Et devinez quoi ? En PHP (avant la version 8), avec l'opérateur de comparaison faible == :
Donc : strcmp(Array, String) devient NULL, qui est égal à 0, ce qui valide la condition "Mot de Passe Correct" !
Il suffit de manipuler le formulaire HTML ou la requête HTTP pour envoyer un tableau.
Au lieu d'envoyer :
Envoyez ceci (en modifiant le nom du champ via l'inspecteur) :
Le [] après le nom transforme la variable en tableau côté serveur.