Home > Radio > Writeups > Writeup HackTheBox : Walkie Hackie

Writeup HackTheBox : Walkie Hackie

Description du challenge :
Our agents got caught during a mission and found that the guards are using old walkie-talkies for their communication. The field team captured their transmissions. Can you interrupt their communication to help our agents escape from the guards?

Pour ce challenge, on nous fournit 4 transmissions audio au format complex.
On a aussi accès à une instance web :
Instance web Walkie Hackie

On peut tester avec des valeurs randoms pour voir comment ça réagit mais rien de spécial se produit.
Il faut sûrement y mettre un préambule spécifique ou je sais pas. Bref, allons voir de plus près les signaux avec Universal Radio Hacker.
Donc, on ouvre nos 4 fichiers avec URH. Exemple avec le premier :
Universal Radio Hacker
En affichant les données en hexadécimal, on constate que les 4 signaux fournis suivent une même logique :

Signal 1 : aaaaaaaa73214693a1ff14
Signal 2 : aaaaaaaa73214693a2ff84
Signal 3 : aaaaaaaa73214693b2ff24
Signal 4 : aaaaaaaa73214693b1ff57

Ça a l’air de matcher avec nos 3 paramètres, pour le signal 1, aaaaaaaa serait le préambule, 73214693 le sync word et a1ff14 le payload.
Je réessaie mais toujours rien.

Par contre, on remarque que les payloads, suivent eux aussi une logique, avec 2 caractères hexa, ff, et 2 autres caractères hexa.
On pourrait se créer une wordlist pour brute-force tous les payloads possibles et voir si une page réagit différemment.
Créons d’abord une wordlist avec crunch :

crunch 6 6 0123456789ABCDEF -t @@FF@@ -o pouet

Passons au bruteforce avec ffuf. Mais d’abord, il nous faut récupérer le nom des paramètres pour la requête POST. Plusieurs possibilités, perso, j’utilise l’onglet Network présent sur n’importe quel navigateur en lançant une requête avec des paramètres au pif. On peut voir le nom de nos 3 paramètres, pa, sw et pl.
Network Edge
Bref, voici la commande pour le bruteforce, sans oublier le Content-Type sinon, il ne se passera rien :

ffuf -c -w pouet -u http://94.237.56.188:40252/transmit -X POST -d "pa=aaaaaaaa&sw=73214693&pl=FUZZ" -H "Content-Type: application/x-www-form-urlencoded"

On note la taille d’une requête type qui fait 2831, CtrlC puis on refait la même commande en y rajoutant le -fs 2831 pour voir si une requête a une taille différente.
On laisse mijoter et là, on voit que TOUS les payloads qui ont leur deuxième partie à F9 ont une size différente.

<SNIP>
[Status: 200, Size: 2896, Words: 420, Lines: 134, Duration: 25ms]
    * W1: 9B
    * W2: F9

[Status: 200, Size: 2896, Words: 420, Lines: 134, Duration: 23ms]
    * W1: A7
    * W2: F9

[Status: 200, Size: 2896, Words: 420, Lines: 134, Duration: 25ms]
    * W1: BE
    * W2: F9

Reste plus qu’à rentrer les bonnes valeurs avec un payload qui finit par F9 et obtenir notre flag :)
On peut aussi faire un curl pour que ça fasse + hacker :

curl -X POST http://94.237.56.188:40252/transmit -d 'pa=aaaaaaaa&sw=73214693&pl=a2fff9'
Copyright © 2024 | Yankos Merci à Sol'Hey pour le logo ♥