IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

la condition "1=1" dans une attaque SQL injection


Sujet :

Sécurité

  1. #1
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 630
    Points : 234
    Points
    234
    Par défaut la condition "1=1" dans une attaque SQL injection
    Bonjour,
    dans un tutoriel proposé par developpez.com détaillant l'attaque par injection SQL, il y a une condition dans la requête : "1=1". Cette condition est elle necessaire ? et si on l'enlevait ?
    voici les étapes à suivre pour lancer une attaque injection décrite dans le tutoriel :

    sur un formulaire où on saisit un login et un mot de passe la vérification se fait souvent avec une requête du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'SELECT * FROM users WHERE login="'.$login.'" AND password="'.md5($pass).'"'
    Si dans la zone de saisie login on met :
    Le requête devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM users WHERE login="admin" and 1=1 //" AND password=md5($pass)
    La connexion avec le login admin est alors accordée car au final la requête exécutée est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM users WHERE login="admin" and 1=1

  2. #2
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 886
    Points : 1 526
    Points
    1 526
    Par défaut
    Non, ici ce n'est pas utile, on aurait très bien pu entrer juste admin" //

    On rajoute généralement une condition 1 = 1 ou "" = "" pour que, le OR étant prioritaire sur le AND, la condition reste vraie quel que soit l'ordre.

    Dans l'exemple ci-dessus, supposons que le test soit fait en sens inverse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'SELECT * FROM users WHERE password="'.md5($pass).'" AND login="'.$login.'"'
    si on entre admin" OR 1=1 // , la condition devient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'SELECT * FROM users WHERE password="'.md5($pass).'" AND login="admin" OR 1=1 //"'
    password="'.md5($pass)'" est sûrement faux, login="admin" est peut-être faux, mais 1=1 est toujours vrai. Donc le test passe.

  3. #3
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 630
    Points : 234
    Points
    234
    Par défaut
    1) Ca veut dire que admin" AND 1=1 // ne sert vraiment à rien, peu importe le cas. il n'y a que admin" OR 1=1 // qui importe !

    2) En SQL, OR est prioritaire par rapport à ET. c'est un cas exceptionnel alors ? parce que en règle général ET est prioritaire par rapport à OU ( en logique ).

Discussions similaires

  1. [MySQL] Problème de quote dans une requete sql
    Par berew dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 05/04/2012, 21h33
  2. Double condition dans une requete SQL
    Par quatar dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 29/05/2007, 16h22
  3. conditions dans une requete sql
    Par beve dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/05/2007, 14h29
  4. Mettre une condition if dans une requete sql
    Par Sardonnen dans le forum Oracle
    Réponses: 4
    Dernier message: 24/03/2006, 11h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo