Answer Me

Catégorie: Prog Difficulté: - Flag: CTFREI{b4s1c_pwnt00l5_pr0gramm1ng}

Challenge

Description


Deuxième challenge d'introduction à la programmation, bonne chance !

Connexion: nc intro.ctfrei.fr 5001

Solution

Comme les questions sont toujours les mêmes, il suffit de prévoir les réponses à envoyer en fonction de la question. Pour connaître la question, on va simplement détecter un mot unique dans celle-ci.

from pwn import remote, context

context.log_level = 'error'

# A chaque mot identifiants une question, on associe la bonne réponse
QUESTIONS_ANSWERS = [
  (b'Trump', b'Homme'),
  (b'capitale', b'Paris'),
  (b'racine', b'2'),
  (b'librairie', b'pwntools'),
  (b'challenge', b'Oblivios'),
  (b'somme', b'4')
]

# Connexion
client = remote('intro.ctfrei.fr', 5001)
# Réception de la première ligne inutile
client.recvline()
for i in range(6):
  # Réception de la question
  data = client.recvline()
  # Pour chaque couple question/réponse
  for question, answer in QUESTIONS_ANSWERS:
    # Si le mot identifiant la question est dans ce qu'on a reçu
    if question in data:
      # Envoi de la réponse associée
      client.sendline(answer)
      break
# On recoit 2 lignes, le flag est dans la seconde
print(client.recvlines(2)[1].decode())
# CTFREI{b4s1c_pwnt00l5_pr0gramm1ng

Dernière mise à jour

Cet article vous a-t-il été utile ?