Skip to main content

(Facile) Ping Pong

Description

Nous avons accès à une capture réseau :

image-1655545854881.png

Le but est de retrouver le flag dans cette dernière.

Analyse

La capture est uniquement composée de paquet ICMP (Ping)

Le début du flag étant "404CTF{" on commence alors à chercher un patterne de la forme XYX. 

Solution

On trouve ce paterne dans la taille des paquets, on va alors les extraires :

from scapy.all import *
import binascii
packets = rdpcap('ping.pcapng')

flag = []
for packet in packets:
    if packet[IP].src == "10.1.0.10":
    # print(packet.show())
    # break
        flag.append(chr(packet[IP].len))
print("".join(flag))

Malheureusement le résultat ne semble pas être le bon :

image-1655546111101.png

Ici nous obtenons un P hors nous voulons un C mais le paterne du départ est présent.

Cette taille correspond à la taille globale du paquet ICMP mais il existe une autre taille, celle des données envoyés, on peut la récupérer de la manière suivante :

from scapy.all import *
import binascii
packets = rdpcap('ping.pcapng')

flag = []
for packet in packets:
    if packet[IP].src == "10.1.0.10":
    # print(packet.show())
    # break
        flag.append(chr(len(packet[Raw].load)))
print("".join(flag))

Cette fois c'est la bonne : 404CTF{Un_p1ng_p0ng_p4s_si_1nn0c3nt}