Ben & Harry - 128 points

Problème

Ben vient de découvrir un drôle de serveur qui semble envoyer des suites de chiffres aléatoires.

Harry est sûr que ça doit vouloir dire quelque chose.
Prouve que Harry a raison.

=== Connexion ===
Serveur : ben-and-harry.phack.fr
Port : 1664 

Résolution

En se connectant pour la première fois au serveur, voici ce qu'on obtient:

$ nc ben-and-harry.phack.fr 1664
{"b": 11, "code": "78 a0 2a 90 95 44 90 44 99 48 a6 2a 90 44 a0 a6 a4 47 2a 99 47 2a 93 99 48 94 40 2a 91 47 5a 99 58", "msg": "Answer me!"}
>>> 

Au début, je pensais que nous avions la main sur un interpréteur Python, mais taper n'importe quoi m'a fait mentir (et perdre la main):

>>> print(1)
✞ Nope, wrong answer...

En regardant le message donné, il n'est pas très compliqué de comprendre qu'il faut décoder la valeur de "code" avec la base "b", et un "msg" inutile. Voici un script possible en Python:

from pwn import *
import json

conn = remote("ben-and-harry.phack.fr", 1664)

while r := conn.recvline():
        print("[RECEIVED] ", r)

        try:
                r = r.decode("utf-8")

                if r.startswith(">>>"): # Si ce n'est pas le premier, on doit découper le début
                        r = json.loads(r[3:])
                else:
                        r = json.loads(r)


                res = ""
                for char in r["code"].split(): # Pour chaque caractère
                        res += chr(int(char, r["b"]))

                print(res)
                print();print() # Saute des lignes

                conn.send(bytes(res, "utf-8"))
        except Exception as e:
                if "PHACK{" in r: print("BINGO!!! FLAG:", r)
                exit(0)

Flag: PHACK{Av3z-v0us-L3s-b4s3s?}