> For the complete documentation index, see [llms.txt](https://writeups.ayweth20.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://writeups.ayweth20.com/2025/404ctf-2025/securite-web/fire-server.md).

# Fire Server

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

{% file src="/files/0SfFqK02wfeYVEEFOPKd" %}

**Description:**

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2F3xpKJnt1qDHeFAzUe08a%2Fimage.png?alt=media&amp;token=4d525677-b674-49b4-963e-10e2f3e3dfa2" alt=""><figcaption></figcaption></figure>

Solution:

En arrivant sur la page d'accueil, nous avons accès à une liste de plusieurs documents :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FddDJ3Xbgeaw1xJCYDRIK%2Fimage.png?alt=media&amp;token=0fb73756-8d8e-45fd-a4fd-266640b79392" alt=""><figcaption></figcaption></figure>

Dès que nous cliquons sur un bouton, l'URL change comme ceci :&#x20;

```
https://fire-server.404ctf.fr/?path=<le nom du document>.txt
```

Il y a donc très clairement une exploitation à tenter via une Path Traversal ici. Pour vérifier cela, nous pouvons analyser le code que nous avons à disposition.\
En regardant rapidement le fichier index.php, nous avons rapidement une info qui nous saute aux yeux :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FgHoVQSZMBiqErQUndlQ8%2Fimage.png?alt=media&amp;token=ef234532-2356-4969-adb1-8c4cfe3dadc9" alt=""><figcaption></figcaption></figure>

Cette fonction `str_replace` va remplacer tout les `../` que nous allons mettre dans notre *path* (pour remonter dans l'arborescence).\
Il faut donc trouver un moyen de bypasser ça, et c'est relativement simple :&#x20;

* Si `../` est retiré, alors `....//` sera partiellement modifié ⇒
  * `....//` va donc trigger la règle et retirer la partie centrale `../`, mais cela nous fait donc le format souhaité : `../` qui est donc ce qu'il nous faut.
  * Par exemple, pour remonter de 2 niveau, voici ce qu'il faut rentrer : `..../..../` car ça devient `../../`

Nous pouvons donc faire de la reconnaissance au fur et à mesure :&#x20;

* <https://fire-server.404ctf.fr/?path=....//....//....//....//> nous donne :<br>

  <figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FaJu1sUADpBg1seoEd1rt%2Fimage.png?alt=media&amp;token=6c4d9546-8402-4f42-aab7-7067054ec6f5" alt=""><figcaption></figcaption></figure>

Après plusieurs énumérations automatiques de répertoires, voici où nous pouvions trouver notre flag :&#x20;

<https://fire-server.404ctf.fr/?path=....//....//....//....//var/files/classified/selenium><br>

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2Fk5q4nAFktfbT8D0DAF78%2Fimage.png?alt=media&amp;token=d14b4260-b2b3-40c7-9aeb-c4a6f56b7faf" alt=""><figcaption></figcaption></figure>

<details>

<summary>🚩FLAG</summary>

`404CTF{m0oN_S3cRe7s_4r3_bUr1eD_d33p}`

</details>
