shuffle_base64

ファイル chall.py および out.txt が与えられた。

chall.py は、以下の処理をするものだった。

  1. flagに2文字ごとにランダムな文字を挿入する。
  2. それにランダムな文字を加えて長さを3の倍数にする。
  3. その結果を3文字ごとに分割し、シャッフルする。
  4. その結果をBase64エンコードして出力する。

out.txt のBase64エンコードされたデータの部分を CyberChef の From Base64 でデコードし、3文字ずつに分割すると、以下のようになった。

Files chall.py and out.txt were given.

What chall.py does was:

  1. Insert random characters after each 2 characters of the flag.
  2. Add random characters to make the length multiple of 3.
  3. Split that in 3-character blocks and shuffle.
  4. Base64-encode the result and output.

I decoded the Base64-encoded data in out.txt using "From Base64" on CyberChef and splitted to 3-character blocks. This is the result:

}d( leq FLT ff| 64, hu! {s@ AG!

これをそれっぽく並べ替えて繋げると、以下のようになった。

I reordered this to make that look proper and joined. This is the result:

FLTAG!{s@hu!ff|leq64,}d(

余計な文字を消すことで、flagが得られた。

I obtained the flag by removing extra characters.

FLAG{shuffle64}

WaniCTF 2023