SQL injections

4 minute read

Web Serveur Partie 2 - Injections SQL

Nous continuons cet après-midi sur des vulnĂ©rabilitĂ©s ultra classiques, puisque nous allons parler de la plus courante de nos jours, l’injection SQL.

L’Ă©crasante majoritĂ© des applications ont besoin de manipuler des donnĂ©s, et il est très courant que l’on ait besoin que cette donnĂ©e soit persistante. Pour ça on se repose en gĂ©nĂ©ral sur un ou plusieurs systèmes de gestion de base donnĂ©es (SGBD, ou DBMS en anglais). On a donc besoin de communiquer les donnĂ©s de l’application au SGBD, et c’est lĂ  que les choses se gâtent.

Il existe une multitude de langages qui peuvent ĂŞtre utilisĂ©s pour communiquer avec des bases de donnĂ©es, mais SQL est encore aujourd’hui le plus commun. La logique du langage est assez simple, et est facile Ă  transposer d’un SGBD Ă  l’autre.

Pas d’inquiĂ©tude si vous n’avez jamais fait de SQL auparavant, vous apprendrez sur le tas. Si vous en avez, dĂ©jĂ  faitm tant mieux pour vous, profitez du temps gagnĂ© pour rattrapper ce que vous n’avez pas eu le temps de faire.

Exercice 00

Ce premier exercice a pour objectif de vous familiariser avec la logique derrière une injection SQL.

Pour cet exercice, rendez vous sur la plateforme suivante:

Votre objectif principal pour cet exercice va être de récupérer les mots de passe des utilisateurs.

Suivez la dĂ©monstration, puis Ă  vous de jouer pour trouver le mot de passe de l’utilisateur Oursin.

Exercice 01

Maintenant que vous vous ĂŞtes familiarisĂ©s avec le principe de l’injection SQL, on va pouvoir mettre ça en pratique.

A vous de résoudre cette épreuve.

Voici quelques questions pour vous guider:

  • quelle entrĂ©e utilisatgeur est vulnĂ©rable ?
  • imaginez Ă  quoi ressemble la requĂŞte, comment peut-on l’injecter tout en la rendant valide ?

Exercice 02

Retournez sur le challenge 00, y a-t-il d’autres tables dans la base de donnĂ©es ? Que contiennent-elles ?

  • Combien de champs la requĂŞte contient-elle ?
  • Quel est le type de SGBD utilisĂ© ?
  • Comment rĂ©cupĂ©rer la liste des tables ?

Exercice 03

A vous d’affronter cette Ă©preuve maintenant.

  • Est-il possible d’injecter le champ de connection ?
  • Quels autres champs d’entrĂ©e utilisateur sont prĂ©sents ?

Exercice 04

Vous allez affronter cette Ă©preuve. Plus d’aide Ă  prĂ©sent, vous ĂŞtes grands maintenant.

Exercice 05

Enfin vous aurez cette épreuve à résoudre.

Pour cette Ă©preuve vous aurez besoin d’Ă©crire un script. Pour ceux d’entre vous qui n’ont pas d’idĂ©es de langage, prenez Python, vous trouverez plus facilement des ressources utiles. Ne restez pas bloquĂ©s sur des soucis liĂ©s au langage, ce n’est pas une piscine Python, n’ayez pas peur de poser des questions.

Quelques questions pour vous guider: - Quel est le problème ? Qu’est-ce qui fait que ce challenge est diffĂ©rent des prĂ©cĂ©dents ? - Pouvez vous trouver la longueur de ce que vous cherchez ? Ça aiderait pas mal dĂ©jĂ . - Quel jeu de caractères pouvez vous logiquement utiliser ?

Exercice 06

Faites nous de retours sur ce que vous avez pensé de la piscine :D