Ci-dessous, les différences entre deux révisions de la page.
web:faille_comparaison_php [2016/03/14 11:01] arkinar créée |
web:faille_comparaison_php [2016/04/18 08:16] yorin Ortho |
||
---|---|---|---|
Ligne 9: | Ligne 9: | ||
La comparaison large ( == ) : | La comparaison large ( == ) : | ||
- | - Il compare la valeur en utilisant le transtypage : convertit une des deux valeurs (ce qui donne de nombreux faux positif) | + | - Il compare la valeur en utilisant le transtypage : convertit une des deux valeurs (ce qui donne de nombreux faux positifs) |
La comparaison stricte ( === ) : | La comparaison stricte ( === ) : | ||
Ligne 17: | Ligne 17: | ||
Les fonctions php : | Les fonctions php : | ||
- | - Elles ont été développés pour comparer les variables. ex :strcmp | + | - Elles ont été développées pour comparer les variables. ex :strcmp |
Exemple de code vulnérable : | Exemple de code vulnérable : | ||
Ligne 40: | Ligne 40: | ||
**2.Exploitation** | **2.Exploitation** | ||
- | Le but est d'exploiter les faux positif pour bypasser une authentification. | + | Le but est d'exploiter les faux positifs pour bypasser une authentification. |
__2.1 Méthode 1 : Comparaison large ( == )__ | __2.1 Méthode 1 : Comparaison large ( == )__ | ||
Ligne 46: | Ligne 46: | ||
Pour bypasser la comparaison large il faut regarder le tableau des comparaisons (cf source). | Pour bypasser la comparaison large il faut regarder le tableau des comparaisons (cf source). | ||
- | Une des lignes indiques que "php" == 0 => renvoie true. | + | Une des lignes indique que "php" == 0 => renvoie true. |
- | Nous allons envoyer en donnée dans le formulaire : | + | Nous allons envoyer dans le formulaire ces données: |
<code>login=0&password=0</code> | <code>login=0&password=0</code> | ||
- | Le php va l'interpreter de la manière suivante : | + | Le php va l’interpréter de la manière suivante : |
<code>if (0==0 && 0==0)</code> | <code>if (0==0 && 0==0)</code> | ||
Ligne 62: | Ligne 62: | ||
Pour bypasser la fonction strcmp il faut utiliser un tableau. | Pour bypasser la fonction strcmp il faut utiliser un tableau. | ||
- | Nous allons envoyer en donnée dans le formulaire : | + | Nous allons envoyer dans le formulaire ces données: |
<code>login[]=abc&password[]=abc</code> | <code>login[]=abc&password[]=abc</code> | ||
- | Le php va générer une erreur mais il va renvoyer true. | + | Le php va générer une erreur mais va tout de même renvoyer true. |
**3.Comment se protéger** | **3.Comment se protéger** | ||
- | Pour se protéger il faut utiliser des comparaisons stricte ( === ). | + | Pour se protéger il faut utiliser des comparaisons strictes ( === ). |
- | Il faut aussi toujours filtrer les valeurs envoyer par l'utilisateur avant de les utiliser. | + | Il faut aussi toujours filtrer les valeurs envoyées par l'utilisateur avant de les utiliser. |
Source : | Source : |