Post

Bypass The Authentification

𝄞 Introduction

Intro

Ce challenge a pour objectif de contourner un systĂšme d’authentification en exploitant une faille d’injection SQL, afin de bypass l’authentification et de rĂ©cupĂ©rer le flag.

𝄞 Solution

Accueil

La page d’accueil prĂ©sente un site classique, organisĂ© en plusieurs sections. La seule section accessible et pertinente pour notre objectif est Connexion SĂ©curisĂ©e, qui mĂšne Ă  un formulaire d’authentification.

Connexion

En entrant des identifiants quelconques, l’application retourne un message d’erreur indiquant que le nom d’utilisateur ou le mot de passe est incorrect. Puisque nous n’avons aucune information au prĂ©alable sur d’éventuels identifiants, nous choisissons de tester une injection SQL pour contourner l’authentification.

𝄞𝄞 UNION SQLI

En injectant une simple apostrophe (') dans le champ username, l’application rĂ©agit diffĂ©remment et retourne un code d’erreur 500.

Error

Lorsque nous essayons d’entrer le mot OR, l’application le bloque et affiche un message d’erreur “EntrĂ©e non valide”.

Blacklist

Cela suggĂšre que l’application utilise une blacklist pour empĂȘcher certaines entrĂ©es susceptibles de conduire Ă  une injection SQL. Nous devons donc trouver une autre mĂ©thode pour contourner l’authentification sans utiliser le mot OR.

Pour ce faire, nous avons utilisé le payload suivant :

1
fxoverflow'UNION select 1,2,3--

Il est crucial de respecter le mĂȘme nombre de colonnes dans la requĂȘte SELECT pour Ă©viter un code d’erreur 500.

Ce payload rĂ©ussit Ă  contourner le formulaire d’authentification et nous connecte sous l’identitĂ© de l’utilisateur “2”.

Avec cette injection, la requĂȘte finale ressemble Ă  ceci :

1
SELECT * FROM users WHERE username = 'fxoverflow' UNION SELECT 1,2,3--' AND password = 'user_input';

Cette requĂȘte :
Effectue la sĂ©lection habituelle sur le tableau users avec le username = ‘fxoverflow’, mais cette condition Ă©choue car l’utilisateur n’existe pas.
Le UNION permet de combiner cette premiĂšre requĂȘte avec SELECT 1,2,3, qui est exĂ©cutĂ©e mĂȘme si la condition initiale est fausse. GrĂące au –, la vĂ©rification du mot de passe est ignorĂ©e, ce qui fait que l’application retourne une rĂ©ponse rĂ©ussie basĂ©e sur les rĂ©sultats du UNION SELECT.

Flag

𝄞 FLAG : PPC2024{4UwxK287znVNp8} 𝄞

This post is licensed under CC BY 4.0 by the author.