/ ndh2k16

NDH2K16 - Don't be too Evil, just a little Bit

Ce challenge était classé dans la catégorie crack-me.

Un serveur est mis à disposition pour ce challenge. Lorsque une tentative de connexion est initiée, on peut remarquer que le serveur nous répond un étrange message :

Only True evil can access this server

Le titre et ce message nous orientent vers le Evil Bit, expliqué sur ce blog.

Dans le cas où le evil bit est présent, le serveur nous laisserai donc passer. On utilise donc l'outil Scapy afin de forger un paquet diabolique. Mais envoyer simplement le paquet ne suffit pas, il faut initier un handshake TCP.

#!/usr/bin/python2
from scapy.all import *

# IP source = 172.16.10.136
# IP dest   = 172.16.1.14
# Le Evil Bit est le 1er bit des Flags d'un paquet IP.
# Obligatoire à 0, flags=4 permet de modifier le bit à 1
ip=IP(src="172.16.10.136", dst="172.16.1.14", flags=4, frag=0)

# On envoie le SYN au serveur 
SYN=TCP(sport=6, dport=3514, flags="S", seq=100)
SYNACK=sr1(ip/SYN)

# On renvoie notre ACK 
my_ack = SYNACK.seq + 1
ACK=TCP(sport=66, dport=3514, flags="A", seq=101, ack=my_ack)
send(ip/ACK)

En regardant le paquet de retour dans Wireshark, il contient le flag !