[ 1day_1chall ] :: [ Day 1 – Mathroshka ]
Descrição: D1v1r74-53 c0m 4 Matroshka! (use wget se tiver dificuldades para baixar o arquivo)
Utilizamos o comando “file” para saber realmente qual o tipo de arquivo apresentado neste desafio:
1 2 |
[root:...BR/CPBR2016/DAY_01/write-up]# file Day1-Matroshka.zip Day1-Matroshka.zip: Zip archive data, at least v1.0 to extract |
Rodamos o comando “unzip” para descompacta-lo e (para nossa surpresa) nos deparamos com um mais um zip…
1 2 3 4 5 6 |
[root:...BR/CPBR2016/DAY_01/write-up]# unzip Day1-Matroshka.zip Archive: Day1-Matroshka.zip extracting: zip.zip [root:...BR/CPBR2016/DAY_01/write-up]# file zip.zip zip.zip: Zip archive data, at least v1.0 to extract |
Conforme o nome do challenge estamos realmente lidando com uma Mathroshka que no final nos recompensará com a primeira flag do 1day_1chall! o/
Pensamos em deixar nosso estagiário rodando o comando “unzip” na mão, porém a idéia de perder o primeiro dia da #CPBR9 não lhe agradou muito e ele resolveu este desafio com uma elegante gambiarra: um shellscript (solve.sh) para descompactar sucessivamente todas as camadas da mathroshka e ao final chamando um script em python (bin2ascii.py) para conversão da flag.
Conteúdo do bin2ascii.py:
1 2 3 4 5 6 7 8 9 10 11 |
#!/usr/bin/env python import binascii import sys binario_in = str(sys.argv[1]) x = "0b%s" % binario_in n = int(x,2) result = binascii.unhexlify('%x' % n) print '[*] Binario --> %s \n[*] Flag --> %s ' % (binario_in, result) |
Conteúdo do solve.sh:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#!/bin/bash i=0 # Descompacta a Matroshka até encontrar um # tipo de arquivo que não seja compactado. while true; do ARQ=$(ls -1 | grep -vE "solve.sh|bin2ascii.py") TYP=$(file $ARQ | cut -d" " -f2) if [ $TYP != "Zip" ]; then echo -ne "\e[33;5m[*] FOUND --> $ARQ \n" break fi echo "[ $i ] $ARQ " WORK="work.zip" mv $ARQ $WORK 7z x $WORK rm $WORK let i++ done # Lê e converte a flag codificada... FLAGBIN=$(cat flag.bin) ./bin2ascii.py $FLAGBIN |
Executando o solve.sh temos o seguinte resultado:
FLAG
m4tr0shk4fr4ct4l
CRIADO POR
RTFM – Red Team Freakin’ Maniacs
© 2014 - Todos os Direitos Reservados