De quoi parle-t-on ? #
La THCon (Toulouse Hacking convention), est une conférence française sur la cybersécurité qui réunit des amateurs, des professionnels et des chercheurs chaque année à Toulouse au mois d’avril.
Pour cette édition (2025), j’ai été l’un des créateurs de défis et j’ai créé un défi de geoINT en 6 parties, quelques défis de stéganographie, et j’ai fait en sorte que tous les défis soient conformes au lore (ce qui n’est pas peu faire).
Note : dans le cas où le CTFd n’est plus en ligne, si vous n’avez pas participé, ou si vous ne vous souvenez pas des défis, vous pouvez jeter un coup d’œil sur https://ctftime.org/event/2660/tasks/ bien que tous ne soient malheureusement pas listés :/
Si vous voulez essayer les défis, mon grand ami Baptiste Rébillard (@rubiks
) héberge le défi complet sur son site : https://baptiste-reb.fr/gunnars_vacation/
Les writeups #
Easy #
Recherche d’un hotel #
Le premier défi consistait à obtenir le nom de l’hôtel dans lequel Gunnar avait séjourné. Aucun souci pour ce chall, la forme de la route vous permet d’obtenir l’emplacement exact.
Reverse search sur une île #
Le deuxième chall nécessitait que vous fassiez une recherche inversée de base pour obtenir le nom du lieu (Capo Testa
en Sardaigne). De là, en regardant l’endroit d’où la photo a été prise, vous pouvez voir que la photo a été prise sur un promontoire rocheux. À partir de là, vous pouvez soit penser intelligemment et choisir l’endroit indiqué sur Open Street Maps comme un point de vue, soit essayer les quelques gros rochers à proximité (et vous faire rôtir par gl4d0s plusieurs fois dans le processus).
Moyen #
Ces défis ont été conçus pour être réalisables avec des outils OSINT de base.
Au-dessus des montages embrummées #
The third challenge. Nous voyons que nous sommes sur la côte, probablement la côte française ou italienne puisque les vacances de Gunnar semblent tourner autour de la mer Méditerranée. Nous sommes près d’un port, mais les recherches inversées ne sont pas très efficaces dans ce cas. Après quelques recherches, nous constatons que les collines de forme particulière situées derrière la baie peuvent faire l’objet d’une recherche inversée. Après cela, tout ce que nous avons à faire est d’obtenir une référence de la forme des maisons pour les aligner parfaitement.
Follow the white tramway engine #
Le quatrieme challenge était en deux étapes. On voit qu’il y a un nexity (une agence immobilière française) mais sans savoir où il se trouve (et il y en a beaucoup en France !). La solution consiste à repérer la ville où l’on se trouve en effectuant une recherche inversée sur la locomotive du tramway. Sa forme nous indique que nous sommes à Marseille, ville dans laquelle il n’y a que 3 nexity :)
Hard #
Les véritables défis intéressants (sauf pour l’équipe qui a cliqué au hasard sur la carte et « Oh, c’est là »).
Overpass this ! #
Le cinquième défi comprennait une photo d’une ville sur la côte avec un Spar près du bord de mer. La qualité de l’image étant assez faible, il était difficile (mais pas impossible) d’effectuer une recherche inversée.
Une façon de résoudre ce problème est de chercher des spars près d’une plage avec overpass turbo. Il y en a beaucoup, mais la côte très découpée peut nous aider à filtrer beaucoup d’entre eux puisque nous savons qu’il nous faut une crique d’une forme particulière.
Voici une requête qu’un participant a faite pour réduire encore plus la liste :
[out:json][timeout:800];
// Define France area
area["name"="France"][admin_level=2]->.fr;
// Find roundabouts in France
(
node["junction"="roundabout"](area.fr);
way["junction"="roundabout"](area.fr);
)->.roundabouts;
// Find beaches in France
(
way["natural"="beach"](area.fr);
relation["natural"="beach"](area.fr);
)->.beaches;
// Find Spar supermarkets
(
node["shop"="supermarket"]["brand"="Spar"](area.fr);
way["shop"="supermarket"]["brand"="Spar"](area.fr);
)->.spar;
// Filter Spar shops near roundabouts (300m)
(
node.spar(around.roundabouts:300);
way.spar(around.roundabouts:300);
)->.spar_near_roundabout;
// Filter Spar shops near beaches (100m)
(
node.spar_near_roundabout(around.beaches:100);
way.spar_near_roundabout(around.beaches:100);
);
// Output result
out center;
Voici la sortie : https://overpass-turbo.eu/s/22lE
Vivent les Isoplèthes #
Le sixième défi impliquait une triangulation, mais comme certaines routes sont des routes nationales, et d’autres des routes très rurales, une distance en vol d’oiseaux ne serait pas très utile (le point qui correspond à ce type d’équidistances est au milieu de la mer).
Il faut prendre les isoplèthes
de la distance (aussi appelés isodistances
) :
J’ai utilisé l’outil https://www.smappen.com/app/ qui est gratuit en ligne, mais vous pouvez aussi le faire en utilisant les données OSM.
Il y a très peu de points où elles se croisent, et nous pouvons le vérifier en utilisant street view (ou panoramax qui donne l’image exacte)
Quelques mots sur l’aspect techniques #
Avec Baptiste Rébillard (un autre membre de mon équipe de CTF) nous avons réalisé l’interface suivante :
Si vous voulez essayer les défis complets, mon grand ami Baptiste Rébillard (@rubiks
) héberge le défi complet sur son site : https://baptiste-reb.fr/gunnars_vacation/