Post

L'Inondation

đť„ž Introduction

Intro

đť„ž Solution

L’objectif de ce challenge est de trouver un moyen de compter le nombre de rhinocéros le plus rapidement possible !

Nc

Nous avons une image avec un motif qui se répète : ~c°^). Si nous fournissons une réponse incorrecte, la connexion est interrompue. Si nous ne répondons pas, un minuteur s’active et nous envoie un message avant de couper la connexion

Nc2

Pour résoudre ce challenge, il suffit de développer un script qui se connecte au serveur Netcat et compte le nombre de rhinocéros pour chaque image. Cependant, j’ai compliqué les choses en utilisant un script plus complexe alors qu’il y avait une solution plus simple notament en utilisé une librairie comme pwntool.

𝄞𝄞 Script python pas optimisé

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import socket

host = 'challenges.404ctf.fr'
port = 31420
buffer_size = 4096

# Création d'une socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

try:
    # Connexion au serveur
    client_socket.connect((host, port))
    print("Connecté au serveur")

    # Répéter le processus 99 fois
    for _ in range(100):
        # Recevoir la réponse du serveur
        response = b""
        while True:
            data = client_socket.recv(buffer_size)
            response += data
            if response.endswith(b"> "):
                break

        response = response.decode()
        print("Réponse du serveur pour l'itération", _ + 1, ":\n", response)

        # Envoyer la réponse
        solve = response.count("~c`°^)")
        print(solve)

        reply = str(solve).encode() + b'\n' # sans le \n --> reponse s'envoie pas 
        client_socket.send(reply)
        print("Réponse envoyée avec succès")

    # Récupérer et afficher la réponse du serveur pour la 100e itération
    response = b""
    while True:
        data = client_socket.recv(buffer_size)
        response += data
        if not data:
            break

    response = response.decode()
    print("Réponse du serveur pour la 100e itération :\n", response)

finally:
    # Fermer la connexion
    client_socket.close()

Flag

đť„ž FLAG : 404CTF{4h,_l3s_P0uvo1rs_d3_l'iNforM4tiqu3!} đť„ž

đť„ž Conclusion

Ce défi nous a permis de mettre en pratique nos compétences en programmation Python et en communication avec des sockets. En développant un script pour compter le nombre de rhinocéros dans les images fournies par le serveur Netcat, nous avons pu obtenir le flag avec succès.

This post is licensed under CC BY 4.0 by the author.