SQL injection Authentification 1
| Samuel MANECHEZ | 21/10/2021 | SQL injection - Authentification | Lien du CFT | 
|---|---|---|---|
1. Trouver le point d'injection
J'ai pu trouver le point d'injection en  testant des injections sql dans le formulaire de cette manière :' Or 1=1
2. Identifier le type de base de données
L'entrée précédante nous renvoie une erreur avec le type de base SQL.
Warning: SQLite3::query(): Unable to prepare statement: 1, near "' and password='' Or 1=1'": syntax error in /challenge/web-serveur/ch9/index.php on line 38
near "' and password='' Or 1=1'": syntax error
Nous obtenous le type de la base :  SQLite3 .
3. Déterminer le nombre de colonnes de la requête de l'application
Pour tenter extraire la struture de la base nous pouvons essayer cette commande :
Ainsi nous obtenons la strucutre et le nombre de colonnes : 2.
4. Si nécessaire déterminer les types des colonnes
Dans le champ password nous obtenons le format de la table user ainsi que le nombre de colonnes :
<input type="password" value="CREATE TABLE users(username TEXT, password TEXT, Year INTEGER)" disabled="">
5. Exploiter la faille en fonction de l'objectif de l'attaque
Pour obtenir le flag nous pouvons y arriver de deux manières :
' Or 1=1 limit 1 offset 1 --
ou
' Union Select username,password from users--
Ces commandes renvoie le mot de passe admin dans le champ password. Il ne reste plus que le récupérer via le HTML :
Le flag est : t0_W34k!$.