Daily AlpacaHackで可愛い動画が撮れたので、writeupと称して掲載することにしました。
Dancing Cursor
Topic: Control Sequences
Author: rsk0315カーソルが左や上に動いたらどう思う?
print-flag.shというshellスクリプトが渡されます。中を見るとBase64encodeされたデータをdecodeして実行してそうなので、とりあえずBase64部分をDecodeしてみることにします。
Here is the flag:
^[[?1049h^[[1B^[[1;38;5;196mA^[[m^[[1;38;5;208ml^[[m^[[1;38;5;226mp^[[m^[[1;38;5;202ma^[[m^[[1;38;5;220mc^[[m^[[1;38;5;214ma^[[m^[[1m{^[[m^[[46C^[[1m}^[[m^[[1B^[[11D^[[38;5;191m#^[[m^[[1A^[[7Dn^[[13D_^[[26Cl^[[34Du^[[5Ds^[[6Dt^[[6CS^[[10C0^[[18Dr^[[1A^[[8D^[[38;5;226m+^[[m^[[1B^[[3Co^[[40Ct^[[34DE^[[3D_^[[1B^[[2D^[[38;5;227mo^[[m^[[2A^[[2C^[[38;5;227m.^[[m^[[1B^[[23Cr^[[34DC^[[34Co^[[16Dh^[[1Cul^[[19Cr^[[1B^[[50D^[[38;5;226m*^[[m^[[35C^[[38;5;190m+^[[m^[[2A^[[4D^[[38;5;226m.^[[m^[[11C^[[38;5;227mo^[[m^[[1B^[[34Dl^[[1A^[[8C^[[38;5;191mo^[[m^[[1B^[[9C_^[[1B^[[14D^[[38;5;221m+^[[m^[[2A^[[10D^[[38;5;190m#^[[m^[[1B^[[35Cc^[[13D3^[[1B^[[14C^[[38;5;221m*^[[m^[[1A^[[29Dn^[[9Cd^[[1A^[[4D^[[38;5;221m+^[[m^[[2B^[[22D^[[38;5;227m.^[[m^[[1A^[[18Cs^[[1A^[[13C^[[38;5;191m#^[[m^[[1B^[[6Co^[[7D_^[[30Do^[[30Cu^[[20Ds^[[7DC^[[1B^[[6C^[[38;5;226m*^[[m^[[1A^[[13C3^[[17De^[[4De^[[30Co^[[4Dn^[[40Dn^[[35C_^[[10Du^[[2D_^[[14Dc^[[21Cr^[[12Db^[[1B^[[3D^[[38;5;191mo^[[m^[[1A^[[6Cd^[[1A^[[39D^[[K^[[2B^[[K^[[1AXiqxox{==============================================}
^[[?1049l... but it has been wiped away.
flagはここだけど消しちゃったよ!と出るみたいですね。実際に実行してみると
Here is the flag:
... but it has been wiped away.
こんな感じ。間にあるのはANSI escape codeといって、Escの後に[を付けて色を変えたりカーソルを移動させたりできるみたいです。先ほどのコードをよく見ると、
^[[1;38;5;196mA
^[[m^[[1;38;5;208ml
^[[m^[[1;38;5;226mp
^[[m^[[1;38;5;202ma
^[[m^[[1;38;5;220mc
^[[m^[[1;38;5;214ma
この辺で色を指定しながらAlpacaと表示させているのが分かります。標準出力にFlagを表示していますが、早すぎて視認できないみたいですね。
この先もANSIのコードを見ながら分析していけばどこに何が入るか判明しそうですが、面倒です。pvコマンドを使います。
sudo apt install pv
でインストールできます。
これでpv -qL 100とすると、1秒あたりに100bytesずつ出力してくれるので、経過をゆっくり見ることができます。
./print-flag.sh | pv -qL 100
