May -> Proof

雑記帳です

SECCON 2017 Writeup

SECCON2017の予選、RiST(@realRiST)というチームで参加しました。 結果は1200点で177位でした。チームを結成して初めて出場したSECCON2016では200点だったので、成長率は500%です。 圧倒的成長卍

f:id:myr523:20171214104349p:plain

チームで解いた問題は

  • Vigenere3d
  • Run me!
  • putchar music
  • Qubic Rube
  • SHA-1 is dead
  • Powerful Shell
  • Log search
  • Thank you for playing!(解いたと言ってもいいのだろうか)

です。自分はPowerful Shellを解きました。ではWriteup書きます。

Powerful_Shell

ファイルの中身を見ると、

$ECCON="";
$ECCON+=[char](3783/291);
$ECCON+=[char](6690/669);
$ECCON+=[char](776-740);
$ECCON+=[char](381-312);
$ECCON+=[char](403-289);
$ECCON+=[char](-301+415);
:
:
If(Test-Path variable:global:psISE){"D`eb`u`g`g`in`g is `pr`o`h`ib`it`e`d";Exit}
:
:
If($host."na`m`e" -ne "C`on`s`o`l`e`H`o`st"){"D`eb`u`g`g`in`g is `pr`o`h`ib`it`e`d";Exit}
:
:

とあったので、デバッグを阻止している部分をコメントアウト。次いでファイルの末尾に

"$ECCON" > file.ps1

を追記してファイルに落とし込む。

実行してもThis host is too flesh! と出てプログラムが落ちる。「SECCON」の文字を出力しているであろう箇所の下の Checking Host を削除。 次いでピアノ。

$secret=@(440,440,493,440,440,493,440,493,523,493,440,493,440,349)

とあるので、これに一致するように奏でれば次に進めるっぽい。

"$k " + [math]::floor($keytone[$k])

を挿入してキーと数値の対応を調べて、 $secret の値に合う楽譜()を作ると

hhjhhjhjkjhjhf

となった。次のステージへ。

ここでも難読化されてるので、

[System.Text.Encoding]::ASCII.GetString($plain) > ans.ps1

としてファイルに書き出す。「また」難読化されたファイルが出て来るので、PowerShell ISEに食わせてステップイン実行する。

f:id:myr523:20171214114409p:plain

flag: SECCON{P0wEr$H311}