Webブラウザ上でキャラクターを動かして規定の手数以内で王冠を集めるゲームのURLが与えられた。
その結果、1面と2面はクリアできたが、3面は手数が足りなくなり、クリアする方法がわからなかった。
そこで、
そして、1歩動いて残りの手数が変わった所で、さらにサーチを行った。
ここで候補が無くなったら、アタッチするプロセスを変えてサーチをやり直した。
候補が残ったら、この値を99などに書き換えることで手数を増やすことができ、3面をクリアできた。
4面は、手数が十分あっても通常の移動ではクリアできない構造だった。
3面の時と同じプロセスにアタッチした状態で、4 Bytes の Unknown initial value でサーチを行い、
右に動いて Increased Value のサーチ、左に動いて Decreased Value のサーチを行うと、
候補を10個程度に絞り込むことができ、1マス動くと値が32変わる様子がみられた。
これをもとに、残りの手数に近いアドレスの値を適切な値に書き換えることで、
キャラクターを移動させ、クリアすることができた。
4面をクリアすると、flagが表示された。
An URL of a browser game in which we control a character to correct crowns within pre-defined number of moves was given.
I opened the game in
I cleared the 1st and 2nd stage, but I couldn't clear the 3rd stage due to lack of moves.
I attached
Then, after making one move and making the number of moves left change, I performed the search again.
When no candidates are left at this point, I changed the process to attach and searched again.
When there is a candidate left, I changed the value to, for example, 99. This lead to increasing the number of moves and I cleared the 3rd stage.
The 4th stage wasn't able to clear only using normal moves even if there were enough number of moves.
Keeping attacheing to the same process as I used for the 3rd stage, I first searched "Unknown initialvalue" (4 Bytes).
Then, I searched "Increased Value" after moving right and "Decreased Value" after moving left.
As a result, there were around 10 candidates left and the value changed by 32 by one-block move.
I cleared this stage by changing the value whose address is near the number of moves left to proper value so that the character moves.
The flag was displayed when I cleared the 4th stage.