こんとろーるしーこんとろーるぶい

週末にカチャカチャッターン!したことを貼り付けていくブログ

INS'hAck 2019 Writeup - xHell

コンテスト終了間際にチームが追い込みをかけていたので、適当に残ってたREV問にチャレンジしたら解けた。
雑すぎる解き方で作問者に申し訳ない。

Question

This is what happens when you let a manager create challenges for INS'hAck.

If you don't have Microsoft Excel, this challenge also works in Google Sheets.

Solution

G2セルのif文の条件に合うようなB1~E1セルの値を求める問題。

B1~E1セルはデフォルトで乱数がセットされる。
B2~E82には計算式が入っている。

G2セルのif文の条件は以下の通り。この条件を満たすB1~E1セルの値がフラグ。

  • B1~E1が2~256
  • E82=1
  • B1-C1=46
  • E1-D1=119

まずはB1セルに=C1+46、D1セルに=E1-119をセットする。
あとはE82セルが1になるような、C1セルとE1セルの値を求めればよい。

C1セルとE1セルをbruteforceで回すVBAマクロを作ればよさそうだが、まずは観察してみようと思い、Excelのフォームのスピンボタンを設置してC1セルとE1セルにリンクさせる。スピンボタンを押下し続けて、各セルの値を観察してみる。

すると、E1セルが132のときに、E列のセルの値の変化が激しいことに気付く。

その状態でC1セルの値を変化させて観察していたところ、C1セルが157のときにE82セルが1となりif文の条件に合致した。

f:id:graneed:20190506022810p:plain

Congrats! Here is yout flag: INSA{203-157-13-132}