Who cares about SSI anyway ?

Flag: HACKDAY{TIM3_t0_FlAg}

Challenge

Description


A system administrator, frustrated after a heated debate about cybersecurity standards, ended up creating a poorly secured cheat sheet. Convinced that he could outsmart his own cybersecurity experts, he disregarded some basic principles. The result? A vulnerable document that might hold sensitive information. Can you uncover his mistakes and decipher the secrets hidden ?

challenges.hackday.fr:48118

Solution

Grâce à ce que répond le serveur, on commence par déterminer la taille du flag :

import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('challenges.hackday.fr', 48118))
client.settimeout(3)
client.recv(1024)

for i in range(1, 25):
  client.send(b'a' * i + b'\n')
  data = client.recv(1024)
  if not data.startswith(b'Wrong length'):
    print(f'Flag size: {i}')

# Flag size: 21

Maintenant, on sait que le flag commence par HACKDAY. Si l'on essaie ça, on se rend compte qu'il y a un délai de réponse.

Ce délai augmente pour chaque lettre correcte de gauche à droite. On va utiliser ce délai de réponse pour savoir quelles sont les bonnes lettres (il faut avoir une connexion stable).

Comme le temps d'attente est linéaire, on a vite fait d'attendre 2s par lettre. J'ai donc multithreadé le script pour gagner du temps, mais limité à 20 threads pour réduire le risque d'instabilité et donc de faux résultats.

Mis à jour

Ce contenu vous a-t-il été utile ?