(SQLI) SQL Injection - PortSwigger (Writeup)
SQL Injection Attacks:
Vulnerability in WHERE clause allowing retrieval of hidden data:


Vulnerability allowing login bypass:

UNION attack, determining the number of columns returned by the query:

Pour déterminer le nombre de colonnes dans une table, on peut introduire un ORDER BY jusqu'à ce que le serveur ne renvoie aucune erreur. Le numéro correspondant sera le nombre de colonnes dans la table. Dans ce cas, il y a uniquement 3 colonnes :
ORDER BY jusqu'à ce que le serveur ne renvoie aucune erreur. Le numéro correspondant sera le nombre de colonnes dans la table. Dans ce cas, il y a uniquement 3 colonnes :
Maintenant que nous connaissons le nombre de colonnes, affichons-le à l'écran en utilisant union select. Cela nous permet d'extraire des informations sensibles de la base de données, telles que la version SQL, le nom de la base, lister des fichiers du serveur, exécuter des commandes, insérer du contenu dans des fichiers, etc...
union select. Cela nous permet d'extraire des informations sensibles de la base de données, telles que la version SQL, le nom de la base, lister des fichiers du serveur, exécuter des commandes, insérer du contenu dans des fichiers, etc...
UNION attack, finding a column containing text:

UNION attack, retrieving data from other tables:




UNION attack, retrieving multiple values in a single column:


Querying the database type and version on Oracle:



Querying the database type and version on MySQL and Microsoft:

Listing the database contents on non-Oracle databases:

Listing the database contents on Oracle:
1. On pourrait utiliser la technique du filtrage à travers toutes les tables existantes.

2. Une autre stratégie consiste à filtrer par les créateurs (propriétaires) de toutes les tables.

Ensuite, filtrez pour afficher uniquement les tables créées par Peter.

Une fois qu'on a trouvé la table USERS_OXGXNO, on cherche à identifier les colonnes.
USERS_OXGXNO, on cherche à identifier les colonnes.
Enfin, on affiche le contenu des colonnes username et password.

Blind SQL Injection:
Conditional responses:
On remarque que le site ne traite pas notre SQL et aucune erreur n'est renvoyée.

La requête est interceptée en utilisant le logiciel BurpSuite.

Si une condition de vérité du type and 1=1 est exécutée, le message "welcome back" apparaît. En revanche, si la condition est fausse, par exemple 2=1, le message n'apparaît pas.
and 1=1 est exécutée, le message "welcome back" apparaît. En revanche, si la condition est fausse, par exemple 2=1, le message n'apparaît pas.
Nous allons profiter de cette condition pour filtrer les utilisateurs dans la table users dont le nom commence par la lettre "a".
users dont le nom commence par la lettre "a".
Nous utiliserons l'outil Intruder de Burpsuite pour effectuer une attaque par force brute de type snipper pour trouver le mot de passe de l'utilisateur Administrator
Intruder de Burpsuite pour effectuer une attaque par force brute de type snipper pour trouver le mot de passe de l'utilisateur Administrator
Nous commençons une attaque et découvrons que le premier caractère du mot de passe est "e", car la longueur de la réponse diffère pour ce caractère par rapport aux autres.
longueur de la réponse diffère pour ce caractère par rapport aux autres.
Script Python automatisant entièreuests, signal, time, pdb, sys, string

Conditional errors:








Mis à jour