Injection SQL

Kiira1000 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -  
Kiira1000 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour (:

Je suis entrain de tester la sécurité du site que je gère avec des potes.
En particulier les injections SQL.
Donc j'ai commencé par le basique, qu'on trouve sur le net: 'OR=1=1', #, ect... et tout était sécurisé. Donc pas de problèmes.
Seulement, quand on entre par exemple 'OR=1=1', il y a un message d'erreur qui s'affiche, comme quoi il y a une erreur à la ligne 1, et me renvoi la requête.

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=1=1'' at line 1

SELECT name FROM playerProfile WHERE name='Nemesis' AND passphrase=''OR=1=1'

Filename: /var/www/-----/-------/--------.php

Line Number: 133


Je me suis dit qu'à priori ça ne représentais pas de danger. Mais avec ce modèle, on peut créer une requête personnalisée... et le site s'en fout! J'ai testé avec des variables au pif, mais il ne trouve pas d'erreur, il renvoi juste qu'il ne connait pas la variable...

Error Number: 1054

Unknown column 'admin' in 'where clause'

SELECT name FROM playerProfile WHERE name='Nemesis' AND passphrase='blabla' AND admin='1'

Filename: /var/www/-------/------/-----.php

Line Number: 133


Est-ce que cela peut représenter un danger potentiel? Comment trouver une façon de l'exploiter et comment régler le problème, si c'est dangereux?

Merci...



2 réponses

Utilisateur anonyme
 
Bonjour

Puisque c'est ton sujet, as-tu compris comment marchait l'injection ?
OR=1=1 ne veut rien dire et c'est normal que ça provoque une erreur de syntaxe. Ce ne serait pas plutôt OR 1=1 ?

De même, le 'admin=1' ne peut provoquer un danger que si tu as réellement un champ qui s'appelle 'admin'. Si tu n'en as pas, tu obtiens le message que tu vois.

Il y a bien un danger potentiel, mais il est très facile à éliminer si tu comprends d'où vient le problème. Il suffit d'utiliser la fonction mysql_real_escape_string si tu travailles avec les fonctions mysql_, ou bien d'utiliser les requêtes préparées avec paramètres si tu utilises PDO.
0
Kiira1000 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
D'accord, merci :)
J'avais pas vu que j'avais mis un "=", va falloir que je retest, merci d'avoir remarqué ça!

Non, admin était un champ mis au pif pour voir ce que cela donnait.

Et merci, je vais essayer de corriger ça (:
0