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 !

  1. 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 !

  2. 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 !

  3. Références & tools


    [1] - Base64.exe for Windows

Aucun commentaire:

Enregistrer un commentaire