Bishop Duel

TCPサーバの接続情報と、ファイル main.rs が与えられた。

Tera Termでサーバに接続すると、以下のような表示になった。

Information to connect to a TCP server, and a file main.rs were given.

Connecting to the server using Tera Term, this was displayed:

o (^) -=H=- BISHOP DUEL ] [ -- press enter to start -- /___\

送信の改行コードをLFに設定してEnterキーを押すと、以下のような表示になった。

After setting the newline character to send to LF and hitting the Enter key, this was displayed:

\__\\\\__\\\\__\WW\__\\\\ Q# - up left # spaces \\\\__\\\\__\\\\__\\\\__\ E# - up right # spaces \__\\\\__\\\\__\\\\__\\\\ Z# - down left # spaces \\\\__\\\\__\\\\__\\\\__\ C# - down right # spaces \__\\\\__\\\\__\\\\__\\\\ \\\\__\\\\__\\\\__\\\\__\ D - offer draw \__\\\\__\\\\__\\\\__\\\\ R - resign \\\\BB\\\\__\\\\__\\\\__\ You are the white bishop. Input move >

盤上を斜めに動かせるコマを操作し、勝負をするようである。
自分のコマは WW で、相手のコマは BB で表されている。

It looks like we are playing a game in which we control pieces that can be moved toward diagonal directions on the board.
The player's piece is expressed as WW, and the opposite's piece is expressed as BB.

Goal 1 (first flag)

相手のコマに自分のコマがあるマスに来てもらうことで、勝負に負けることが目的である。

盤面の範囲内のみを動かす場合、__ で表されるマスからは __ で表されるマスにのみ行くことができ、 \\ で表されるマスからは \\ で表されるマスにのみ行くことができるので、初期状態で違う種類のマスにあるコマを重ねることはできない。
しかし、右端のマスのさらに一つ右に行こうとすると、左端の違う種類のマスに出ることがわかった。
これによりコマが居るマスの種類を変えた後、相手がコマを動かせる範囲のマスに行くことで、flagを得ることができた。

The goal is losing the game by having the opposite's piece move to the space where the player's piece is.

If we make moves only within the board, we can go only spaces represented as __ from spaces represented as __, and only spaces represented as \\ from spaces represented as \\.
Therefore, we cannot move pieces that are on different kind of spaces in the initial state to a same space.
Still, I found that the piece moves to a leftmost space that has different kind when I try moving my piece to one step further from the rightmost space.
I obtained the flag by changing the kind of space on which my piece is in this way and then moving my piece to where the opposite's piece can go.

sdctf{L0SiNG_y0uR_S0uRC3_C0d3_sUcKs}

Goal 2 (second flag)

自分のコマを相手のコマがあるマスに動かすことで、勝負に勝つことが目的である。

以下のように操作を行うことで、flagを得ることができた。

The goal is winning the game by moving the player's piece to the space where the opposite's piece is.

I obtained the flag in this way:

goal_2_log.txt

sdctf{I_d1dnt_hAND_0u7_th3_s0urC3_c0D3_thIs_TIME}

San Diego CTF 2022