# La Vie Française

**Catégorie:** Web - **Difficulté:** Facile

**Description:**

<figure><img src="/files/48RsVbbUf6QCOQRJUtjP" alt=""><figcaption></figcaption></figure>

Lien : <https://la-vie-francaise.challenges.404ctf.fr/>

**Solution:**

Pour ce challenge, nous arrivons sur une page avec un lien pour postuler (s'inscrire) ou pour se connecter :&#x20;

<figure><img src="/files/j0PsIEzH66XmnXjVkGoC" alt="" width="563"><figcaption></figcaption></figure>

Dans un premier temps, nous pouvons tester de nous inscrire pour voir ce qu'il est possible d'avoir. On peut tenter de s'inscrire avec le pseudo admin, mais il y a un message d'erreur :&#x20;

<figure><img src="/files/Sr1vjUzhxbo9qxiMJiwL" alt="" width="443"><figcaption></figcaption></figure>

L'utilisateur *admin* a été désactivé donc il va être compliqué de s'inscrire ou de se connecter en tant qu'admin...

Mais essayons avec un autre combo (*user / pass*). Ici tout est bon. Nous avons pu nous inscrire et nous connecter. Mais rien de vraiment intéressant maintenant : <br>

<figure><img src="/files/xvG658wMX4XJlLVT4XUW" alt="" width="563"><figcaption></figcaption></figure>

Etrange...\
Rien d'intéressant dans le code source, avec d'autres infos (username) c'est pareil, donc il faut continuer à chercher...

Après quelques jours de réfléxion, je me suis dit qu'on pouvait surement faire des injections SQL sur le formulaire de connexion.\
J'ai donc testé et voici le résultat :clown: :&#x20;

<figure><img src="/files/ZfmMkFPhHtlmZICbJcv2" alt="" width="317"><figcaption></figcaption></figure>

Bon bah la SQLi, c'est pas ici... Alors je m'obstine (ou je force dans ma connerie) à trouver l'endroit où faire les injections SQL.\
En regardant la requêtes que nous envoyons au serveur lors de l'accès à l'espace personnel (après la connexion), nous pouvons voir un uuid dans les cookies.\
Et l'injection dans les cookies, c'est possible. Alors testons une injection SQL basique :&#x20;

<figure><img src="/files/g6aEx1v05Fo5GxFYDcCf" alt="" width="503"><figcaption><p>Payload : ' OR 1=1#</p></figcaption></figure>

C'est incroyable, mais ça fonctionne. Alors continuons dans ce sens et allons jusqu'au bout.\
Nous allons dans un premier récupérer les noms des tables :&#x20;

<figure><img src="/files/507jJnC6CB0qn73PtQnR" alt="" width="563"><figcaption><p>Payload : ' UNION SELECT GROUP_CONCAT(table_name), null, null FROM information_schema.tables#</p></figcaption></figure>

En regardant, nous trouvons des tables intéressantes comme user. Maintenant nous allons récupérer le nom de ses colonnes pour en extraire ce qui est intéressant :&#x20;

<figure><img src="/files/wQWgar2faQMlP3gwqA4o" alt="" width="563"><figcaption><p>Payload : ' UNION SELECT GROUP_CONCAT(column_name), null, null FROM information_schema.columns WHERE table_name = 'users' #</p></figcaption></figure>

Maintenant que nous avons les noms des colonnes, nous pouvons récupérer le contenu de la table en utilisant les infos recueillies :&#x20;

<figure><img src="/files/rPo48oZMxvVkd5kUuv95" alt="" width="563"><figcaption><p>Payload : ' UNION SELECT GROUP_CONCAT(username), null, null FROM users #</p></figcaption></figure>

<figure><img src="/files/ZSqTUjMXBCdRuzP1vqsK" alt="" width="563"><figcaption><p>Payload : ' UNION SELECT GROUP_CONCAT(password), null, null FROM users # </p></figcaption></figure>

Maintenant que nous avons récupérer les usernames et les mots de passe de chaque personne, nous allons pouvoir tous les essayer directement sur le site :&#x20;

<figure><img src="/files/DlZerkSWF4kr6jeOtWn0" alt="" width="233"><figcaption></figcaption></figure>

Avec le username "madeleineforestier" et son mot de passe, nous pouvons accéder à un nouvel espace :&#x20;

<figure><img src="/files/eeeXvAhIcPiTWwYUnDZr" alt="" width="520"><figcaption></figcaption></figure>

En allant sur l'espace admin, nous pouvons directement récupérer le flag :&#x20;

<figure><img src="/files/IpzSzHBXpmCk3mfCpTNR" alt="" width="319"><figcaption></figcaption></figure>

<details>

<summary>🚩 FLAG</summary>

```
404CTF{B3w4Re_th3_d3STruct1v3s_Qu0tes}
```

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://writeups.ayweth20.com/2023/404ctf-2023/web/la-vie-francaise.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
