tkbctf2 skillanalyzer write-up

まともに解けたのがこれだけだったので、コンテスト中にとった手順を詳しめに書く

96d4e828f611bdd4e3d2bc45bb9e8a40d59763bb というファイルが落ちてくる
Bzで見てみるとMZスタブ _CorExeMainがあるので windowsの.Netだと分かる

exeを実行してみる

分からない ILを読む(ILspyだとC#では正しく表示されない)

akagiさんmgmgくらいしかまともに分からない
読みやすくするために visual studioデバッグする

開発者コマンドプロンプト

ildasm 96d4e828f611bdd4e3d2bc45bb9e8a40d59763bb.exe /OUT=sa.il
ilasm sa.il /DEBUG

と実行すると、デバッグ情報付きのsa.exeが作成でき、
これを visual stdio > 適当なcsharpのプロジェクトの作成 > プロパティ > デバッグ > 外部プログラムの開始

F11のステップ実行で実行すると

こんな感じ

読みにくいけどイミディエイトウィンドウでちょっと遊べる様になる、後ブレークポイントが使えて嬉しい
ローカル変数はV_0,V_1,V_2で番号が振られていて、引数はA_0,A_1と振られており、それぞれイミディエイトウィンドウで使える stackの見方は分からなかったので、知ってる人教えて下さい

"S?[1-7]*" が入力として使えるらしい という事が読んでわかる
しかし暗号の解き方は分からない 文字数と横幅は一致してるので、対応させると解ける?と考えた
Sは先頭しか置けないため "S1234567" に対応している?

先頭から順番に

2
246

157
36
47
6
137
4

3
1

3

S157

が答え?と思って入力するも

はずれ

逆順にすると

S157

3

1
3

4
137
6
47
36
157

246
2


なんか出た 7th danってなんだろう と思ったら音ゲーらしい

You're the 7th dan player!

が答え