bonjour im workin sur un projet et j'ai besoin de faire cette page de connexion PHP vulnérable SQLI .. j'ai essayé autant que je peux pour supprimer les fonctions qui échappent aux caractères spéciaux
Mais quand j'essaie d'injecter rien ne se produit ...
login.php: p>
3 Réponses :
Ceci ne peut pas em> fonctionner car, si vous avez de nombreux enregistrements d'utilisateur, le compteur peut essayer de changer la condition à quelque chose comme: p> alors la condition ci-dessus sera alors la condition ci-dessus Seulement filtrer les utilisateurs non existants et ne vérifie que un seul utilisateur à renvoyer. p> p> $ code> sera plus que
1 code> mais vous vérifiez Seul un seul enregistrement à sortir:
Si vous injecte un tel SQL dans le champ Mot de passe, votre requête échouera.
avec Votre requête deviendra : P> 'ou' 1 '=' 1 ' p>
SELECT id FROM users WHERE username = '$username' and password = '' or '1' = '1''
-- Syntax error a single quote is in excess --------------------------------^
Mais cela ne fonctionnera toujours pas en raison de la compté pour être un droit?
@PraveenkumarpurushOTOTOTOTOTOTOTOTOTHAMAN, mais la limite 1 code> et la modification du compteur
$ == 1 code> était déjà mentionnée dans d'autres réponses, je ne voulais pas voler i > autres solutions
Mais limite 1 code> n'est-ce pas dans la question ou le droit de l'opération?
Eh bien, il peut changer soit le code, soit l'injection (il doit modifier l'injection en raison de l'erreur de syntaxe qu'elle fournira)
@CID Cela a fonctionné sans changer le code ni l'injection, j'ai juste oublié de supprimer la citation comme vous l'avez mentionné
mais quand j'essaie d'injecter
'ou' 1 '=' 1 ' code> p> p>
Essayez ceci p>
xxx pré> vous pouvez même utiliser / ajouter
décalage code> pour choisir l'utilisateur que vous voulez (par ligne). P> < Pré> xxx pré>
puis (en raison de la limite 1) p>
xxx pré> est vrai. Le
- code> est le début d'un commentaire en ligne dans SQL, de sorte que le reste de la requête est ignoré. Qui a des avantages évidents que nous pouvons raccourcir ou simplement la requête. Les moins de conditions meilleurs et nous voulons avoir accès à la fin de la requête pour la limite et le décalage. P>
Ceci illustre également la folie de la recherche du mot de passe. Si cela a été vérifié dans le code, cela ne vous connecterait pas. Mais parce que ce n'est pas le cas, ce sera des attaques de chronométrage et de ce que de côté. P> blockquote>
Cela aurait dû être la réponse acceptée, qui est plus complète que nos réponses
@CID - merci. C'est probablement la forme la plus courante que cette attaque prendrait.
Lorsque vous utilisez la clause CODE> LIMIT CODE>, vous devez également ajouter dans la clause par identifiant code> pour obtenir des résultats déterministes en supposant que la colonne ID existe et est une clé primaire qu'elle fait dans 9 de la 10 cas, sinon vous pouvez essayer le déprécié
commander par 1 code> SQL Standard Syntaxe, les gens ont tendance à placer la colonne clé principale d'abord dans la table.
Je voudrais simplement parcourir à travers eux, trouver des comptes intéressants, puis modifier le mot de passe et le courrier électronique. etc... :-)
Je sais @Artisticphoenix je veux dire limite code> sans
commander par code> est non déterministe, vous pouvez donc manquer de comptes intéressants lorsque MySQL donne les mêmes enregistrements en raison de (possible) au hasard. SQL Tables et Resultats sont par définition SQL sans commande b> sans utiliser
commander par code> clause
Juste, mais si vous les introduisez tout à l'aide d'un décalage, je ne vois pas comment il serait manqué. Votre juste ne garantit pas que la commande cette fois sera la même prochaine fois.
Première question: pourquoi es-tu même prêt à faire ça?
@Aaronjonk pourrait être d'apprendre comment les attaques d'injection SQL fonctionnent?
rien ne se produit code> sonne comme une erreur fatale. Quel est le code d'état de la page? Avez-vous vérifié votre journal d'erreur?
@Aaronjonk Préparation d'un laboratoire vulnérable