Journey to the Center of the File

Time Remaining: 0d 13h 3m 28s

Grab Bag - 100 points

Description

W(e( (h(a(v(e( (t(o( (g(o( (d(e(e(p(e(r)))))))))))))))))))

download

ダウンロードしたファイルを解凍するとflagファイルができます。fileコマンドでファイルタイプを確認します。
$ file flag 
flag: bzip2 compressed data, block size = 400k
さらに解凍してファイルタイプを確認します。
$ file flag
flag.dat: Zip archive data, at least v2.0 to extract
繰り返し圧縮されているようですので、ファイルタイプを調べて解凍するシェルスクリプトを作ります。
mv -f flag flag2
while :
do
    if [ "`cat flag2 | grep MCA{`" ]; then break; fi
    out=`file flag2`
    echo $out
    case "$out" in
        *bzip2* )
            mv -f flag2 flag2.bz2
            bunzip2 flag2.bz2
            ;;
        *Zip* )
            unzip flag2
            mv -f flag flag2
            ;;
        *ASCII* )
            base64 -d flag2 > flag
            mv -f flag flag2
            ;;
        *gzip* )
            mv -f flag2 flag2.gz
            gunzip flag2.gz
            ;;
        *init=* )
            base64 -d flag2 > flag
            mv -f flag flag2
            ;;
        * )
            break
            ;;
    esac
done
スクリプトを実行すると、最後にフラグ文字列が書かれたファイルができています。
フラグは、
MCA{Wh0_Needz_File_Extensions?}
です。

新しいシェルプログラミングの教科書
三宅 英明
SBクリエイティブ
2017-11-21