Analyse
On nous donne uniquement une grosse (~6mo) image SVG :(
On l'affiche et... rien de spécial.
On l'ouvre avec ce bon vieux Notepad++ par exemple et on découvre, au milieu, un gros paquet de données encodé en base64.
<meta name="geturflaghere" value="Vm0...
Avec le nom "geturflaghere" on en sûr ! Le flag est là !
Après un premier décodage, on s’aperçoit que le flag a été encodé de nombreuses fois :(
Il va falloir automatiser ça !
Décodage
Chacun sa méthode pour le décodage, en voici 2 :
Batch + base64.exe
Cette méthode nécessite d'avoir extrait la partie base64 du fichier avant.
@echo off
if "%1" == "" goto usage
if not exist "%1" goto usage
copy %1 %TEMP%\%~n1.tmp 1> NUL
:l
base64.exe -d %TEMP%\%~n1.tmp %TEMP%\%~n1.tmp.dec 2> NUL
if %ERRORLEVEL% == 1 goto flag
del %TEMP%\%~n1.tmp
ren %TEMP%\%~n1.tmp.dec %~n1.tmp
goto l
goto exit
:usage
echo Usage: %~n0 file.b64
goto exit
:flag
type %TEMP%\%~n1.tmp
del %TEMP%\%~n1.tmp
goto exit
:exit
Python
Petite astuce pour extraire les données, on cherche juste une chaine assez longue contenant uniquement les caractères d'un base64 :
import re
import base64
image = re.findall('[\w+/=]{100,}',
open("stega4.svg").read().replace(" ", ""))[0]
try:
while 1:
image = base64.b64decode(image)
except TypeError:
print image
Dans les 2 cas, on obtient : G1rl1en3x7d00rIz9:]
Et voilà vous avez le flag ! Gogo next challenge !
Références & tools
[1] - Base64.exe for Windows
lundi 27 juin 2011
CTF Public NDH2K11 – Stega4
Nous revoilà avec les write-ups du CTF Public de la NDH 2011, cette fois c'est le Stega4 !
Inscription à :
Publier les commentaires (Atom)
Aucun commentaire:
Enregistrer un commentaire