MCTEENX
đ Introduction
đ Objectif
Lâobjectif de ce challenge consiste Ă dĂ©couvrir le mot de passe du fichier .zip pour accĂ©der Ă son contenu et trouver le flag.
đ Solution
Ă lâintĂ©rieur de ce fichier .zip, nous pouvons voir un fichier script.sh.
Le fichier .zip est protégé par un mot de passe, nous devons donc trouver une solution pour voir le contenu de script.sh.
Pour cela, nous pouvons essayer de casser le mot de passe avec lâoutil zip2john
1
2
zip2john monfichier.zip > myhashzip
john -wordlist=/usr/share/wordlists/rockyou.txt myhashzip
Malheureusement, cela nâa rien donné⊠Dans lâintroduction du challenge nous avons un petit texte :
I fly in the sky, I got wings on my feet.
En faisant des recherches sur internet, on apprend que cette phrase est tirĂ©e de lâalbum Whole Lotta Red dont le titre de la musique est King Vamp. Je me suis alors dit quâil fallait crĂ©er une wordlist personnalisĂ©e en utilisant les paroles de la chanson. Cependant, cette mĂ©thode nâa pas fonctionnĂ© non plus.
Plus tard, sur le discord officiel du CTF, jâai appris que lâintroduction nâavait pas de rapport avec le challenge.
Un membre de mon Ă©quipe mâa fait dĂ©couvrir quâil existait une vulnĂ©rabilitĂ© sur ZipCrypto, connue sous le nom de Known-Plaintext Attack*.
Pour réaliser cette technique, nous devons disposer de plusieurs prérequis :
Notre fichier .zip doit utiliser soit lâalgorithme de chiffrement ZipCrypto Store ou ZipCrypto Deflate.
1
7z l -slt red.zip | grep Method
Il faut connaĂźtre au moins 12 octets de plaintext et au moins 8 dâentre eux doivent ĂȘtre contigus..
Lâavantage dâavoir un fichier .zip, câest que nous pouvons lister les noms des fichiers inclus sans mĂȘme connaĂźtre le mot de passe. Ainsi, avec lâextension de ces fichiers, nous pouvons facilement en dĂ©duire leurs magic bytes.
Dans notre cas, nous avons vu tout Ă lâheure que notre fichier avait un fichier script.sh. Nous savons quâun script shell commence par un Shebang du style :
#!/bin/bash
Si on compte le nombre dâoctets, nous en avons 11, mais avec un retour Ă la ligne (\n), on en a 12 !
Toutes nos conditions sont remplies ! Nous pouvons alors commencer lâattaque en utilisant bkcrack.
1
./bkcrack -C red.zip -c script.sh -P myzip.zip -p script.sh
Ă savoir que cette technique peut prendre pas mal de temps.
Nous avons donc récupéré les clés de chiffrement. Nous pouvons maintenant récupérer le contenu du fichier script.sh.
1
./bkcrack -C red.zip -c script.sh -k c0b1bc78 c3206dfc e7e5bae1 -d script.sh
En analysant le fichier script.sh, nous trouvons une grande chaĂźne en base64.
Nous obtenons donc une image que nous allons récupérer et analyser.
Nous dĂ©couvrons quâil y a une chaĂźne en hexadĂ©cimale cachĂ©e via la technique du lsb.
Nous trouvons une chaĂźne assez Ă©trange. AprĂšs plusieurs tentatives de comprendre/dĂ©coder cette chaĂźne, le XOR semble ĂȘtre une bonne piste. Cependant, le brute force de la clĂ© sur le XOR ne donne rien. Il fallait donc essayer de deviner le dĂ©but du plaintext pour retrouver la clĂ©. Comme nous savons que notre flag commence forcĂ©ment par TFCCTF{ nous pouvions espĂ©rer que notre plaintext commence ainsi.
Ainsi, nous pouvons voir la répétition de la clé qui est WLR. Nous pouvons désormais XOR notre chaßne avec la bonne clé.
đ FLAG : TFCCTF{4int_n0_reasoN1n_a1nt_n0_fixin}
đ
Un grand merci Ă Dysnome pour son aide sur ce challenge.