Cyber 2021/2022 G8 : Différence entre versions

De Wiki d'activités IMA
(Page créée avec « Théo VAN ROMPAEY, Aviran TETIA »)
 
Ligne 1 : Ligne 1 :
Théo VAN ROMPAEY, Aviran TETIA
+
= Challenges ctf =
 +
 
 +
== Flocons ==
 +
 
 +
== Espion dans le bus ==
 +
 
 +
1. Nous avons téléchargé le fichier  capture-myst1.pcap
 +
2. Nous l'avons ouvert avec Wireshark
 +
3. Nous avons filtré uniquement les paquets provenant du périphérique "3.4.1" :
 +
Nous avons pour cela ajouté cette ligne en filtre :
 +
 
 +
usb.src == "3.4.1"
 +
 +
 
 +
4. Nous avons ajouté une colone pour les "leftover-data" car celle-ci contient les numéros de touches frappées par l'utilisateur (nous allons par la suite en extraire le 4 ème octet pour chaque ligne)
 +
5. Nous avons éxporté la capture résultante en format .csv
 +
 
 +
File> Export packet dissection> as .CSV
 +
 
 +
Nous appelons ce fichier "OUTUSB.csv".
 +
 
 +
6. Nous avons préparé le fichier pour qu'il soit uniquement constitué de la colone "leftover-data"  :
 +
 
 +
cat OUTUSB.csv | cut -d "," -f 8 | sed ':a;N;$!ba;s/"//g' > HEXDUMP.txt
 +
 
 +
7. Nous utilisons ensuite un programme Python afin de convertir le 4 ème octet de chaque ligne en la touche correspondante du clavier. (voir ce tableau pour la correspondance "indice de clavier" et "touche réelle appuyée" : https://www.win.tue.nl/~aeb/linux/kbd/scancodes-14.html) :
 +
 
 +
<code>
 +
 
 +
# coding: utf-8
 +
 
 +
newmap={
 +
 
 +
        40: "Enter",
 +
        41: "esc",
 +
        42: "del",
 +
        43: "tab",
 +
        44: "space",
 +
        45: "-",
 +
        47: "[",
 +
        48: "]",
 +
        56: "/",
 +
        57: "CapsLock",
 +
        79: "RightArrow",
 +
        80: "LetfArrow",
 +
        83: "NumLock",
 +
        90: "2",
 +
        98: "0",
 +
        86: "-",
 +
        94: "6",
 +
}
 +
 
 +
myKeys = open('HEXDUMP.txt')
 +
i = 1
 +
keyVal = int(00000000)
 +
for line in myKeys:
 +
    bytesArray = bytearray.fromhex(line.strip())
 +
#  print(str(bytesArray) + "\n")
 +
    #print "Line Number: " + str(i)
 +
 
 +
    for byte in bytesArray:
 +
        #print(str(byte)+"\n")
 +
        if byte != 0:
 +
            keyVal = int(byte)
 +
    if keyVal in newmap:
 +
        #print "Value map : " + str(keyVal) + " — -> " + newmap[keyVal]
 +
        print(newmap[keyVal])
 +
    else:
 +
        print("No map found for this value: " + str(keyVal))
 +
 
 +
#print format(byte, ‘02X’)
 +
    i+=1
 +
 
 +
</code>
 +
 
 +
8. Nous éxécutons le programme de la façon suivante :
 +
 
 +
python3 map.py  | sed ':a;N;$!ba;s/\n/ /g'
 +
 
 +
Nous pouvons ainsi en déduire le flag
 +
 
 +
== Travail de serrurerie ==
 +
 
 +
1. Téléchargement et décompression du fichier zip :
 +
 
 +
unzip data.zip
 +
 
 +
2. Autoriser nbd (en su -):
 +
 +
modprobe nbd max_part=8
 +
 
 +
3. Connection du network block device :
 +
 
 +
qemu-nbd -f raw --connect=/dev/nbd0 data
 +
 
 +
4. Montage des deux partition pour en constater le contenu :
 +
 
 +
mount /dev/nbd0p1 /mnt/ctf
 +
 
 +
Le contenu de la première partition n'était pas utile
 +
 
 +
mount /dev/nbd0p2 /mnt/ctf
 +
 
 +
Le contenu de /mnt/ctf est endommagé (contient un dossier lost+found) mais il reste un fichier nommésecret.zip
 +
 
 +
Cependant, un mot de passe est demandé pour le dézziper.
 +
 
 +
5. En faisant un cat sur le fichier originel data, nous avons remarquer qu'un mot de passe apparaissait en claire. En l'essayant nous avons réussi à décompresser le fichier zip et atraper le drapeau.
 +
 
 +
 
 +
== Spécialiste des écoutes ==
 +
 
 +
Ce challenge était simple : solution à mettre sur le Wiki après le CTF.
 +
 
 +
== Perçage de coffre ==
 +
 
 +
Ce challenge était simple : solution à mettre sur le Wiki après le CTF.
 +
 
 +
== Déchiffrer le manuscrit ==
 +
 
 +
 
 +
== Dessiner avec des sons ==
 +
 
 +
 
 +
== Encore une image en musique ==
 +
 
 +
 
 +
== Clef à la loupe ==
 +
 
 +
 
 +
== Filsss fait un sssssomme ==
 +
 
 +
 
 +
== Existe-til encore de vraies brutes ? ==
 +
 
 +
 
 +
== Déjà vu ==

Version du 19 janvier 2022 à 11:26

Challenges ctf

Flocons

Espion dans le bus

1. Nous avons téléchargé le fichier capture-myst1.pcap 2. Nous l'avons ouvert avec Wireshark 3. Nous avons filtré uniquement les paquets provenant du périphérique "3.4.1" : Nous avons pour cela ajouté cette ligne en filtre :

usb.src == "3.4.1"

4. Nous avons ajouté une colone pour les "leftover-data" car celle-ci contient les numéros de touches frappées par l'utilisateur (nous allons par la suite en extraire le 4 ème octet pour chaque ligne) 5. Nous avons éxporté la capture résultante en format .csv

File> Export packet dissection> as .CSV
Nous appelons ce fichier "OUTUSB.csv".

6. Nous avons préparé le fichier pour qu'il soit uniquement constitué de la colone "leftover-data"  :

cat OUTUSB.csv | cut -d "," -f 8 | sed ':a;N;$!ba;s/"//g' > HEXDUMP.txt

7. Nous utilisons ensuite un programme Python afin de convertir le 4 ème octet de chaque ligne en la touche correspondante du clavier. (voir ce tableau pour la correspondance "indice de clavier" et "touche réelle appuyée" : https://www.win.tue.nl/~aeb/linux/kbd/scancodes-14.html) :

  1. coding: utf-8

newmap={

       40: "Enter",
       41: "esc",
       42: "del",
       43: "tab",
       44: "space",
       45: "-",
       47: "[",
       48: "]",
       56: "/",
       57: "CapsLock",
       79: "RightArrow",
       80: "LetfArrow",
       83: "NumLock",
       90: "2",
       98: "0",
       86: "-",
       94: "6",

}

myKeys = open('HEXDUMP.txt') i = 1 keyVal = int(00000000) for line in myKeys:

   bytesArray = bytearray.fromhex(line.strip())
#   print(str(bytesArray) + "\n")
   #print "Line Number: " + str(i)
   for byte in bytesArray:
       #print(str(byte)+"\n")
       if byte != 0:
           keyVal = int(byte)
   if keyVal in newmap:
       #print "Value map : " + str(keyVal) + " — -> " + newmap[keyVal]
       print(newmap[keyVal])
   else:
       print("No map found for this value: " + str(keyVal))
  1. print format(byte, ‘02X’)
   i+=1

8. Nous éxécutons le programme de la façon suivante :

python3 map.py  | sed ':a;N;$!ba;s/\n/ /g'

Nous pouvons ainsi en déduire le flag

Travail de serrurerie

1. Téléchargement et décompression du fichier zip :

unzip data.zip

2. Autoriser nbd (en su -):

modprobe nbd max_part=8

3. Connection du network block device :

qemu-nbd -f raw --connect=/dev/nbd0 data

4. Montage des deux partition pour en constater le contenu :

mount /dev/nbd0p1 /mnt/ctf

Le contenu de la première partition n'était pas utile

mount /dev/nbd0p2 /mnt/ctf

Le contenu de /mnt/ctf est endommagé (contient un dossier lost+found) mais il reste un fichier nommésecret.zip

Cependant, un mot de passe est demandé pour le dézziper.

5. En faisant un cat sur le fichier originel data, nous avons remarquer qu'un mot de passe apparaissait en claire. En l'essayant nous avons réussi à décompresser le fichier zip et atraper le drapeau.


Spécialiste des écoutes

Ce challenge était simple : solution à mettre sur le Wiki après le CTF.

Perçage de coffre

Ce challenge était simple : solution à mettre sur le Wiki après le CTF.

Déchiffrer le manuscrit

Dessiner avec des sons

Encore une image en musique

Clef à la loupe

Filsss fait un sssssomme

Existe-til encore de vraies brutes ?

Déjà vu