LoginSignup
0
0

More than 3 years have passed since last update.

picoCTF 2021 Transformation

Last updated at Posted at 2021-04-03

できなかった問題をwriteup等を参考に勉強した記録を残す。
この問題を解くカギは,ヒントのとおり,ネットでTransformツールを探し当てることだったようだ。

Transformation

フラグを加工したpython

''.join([chr((ord(flag[i]) << 8) + ord(flag[i + 1])) for i in range(0, len(flag), 2)])

ファイルencで与えられた文字列

灩捯䍔䙻ㄶ形楴獟楮獴㌴摟潦弸弲㘶㠴挲ぽ

ヒント

You may find some decoders online

encのバイナリ

e7 81 a9 e6 8d af e4 8d 94 e4 99 bb e3 84 b6 e5 bd a2 e6 a5 b4 e7 8d 9f e6 a5 ae e7 8d b4 e3 8c b4 e6 91 9f e6 bd a6 e5 bc b8 e5 bc b2 e3 98 b6 e3 a0 b4 e6 8c b2 e3 81 bd

picoCTF{}のpiを与えられたpythonで加工してみる

flag = "pi"
enc = ''.join([chr(   (ord(flag[i]) << 8) +    ord(flag[i + 1])  ) for i in range(0, len(flag), 2)])
print(ord(enc))
print(hex(ord(enc)))

結果

28777
0x7069

困った。encのバイナリと全然違う。

ここから他力。

解いた人は,online convertorを使ったと書いてる。
URLは書いてない。

online convertorで検索
みつからない

picoによくある「問題名=ヒント」でやってみる
Transformation decorde toolでググると

というのが見つかった。
試してみる
image.png
赤〇に pi の 28777 が見える
次の青〇の 17236 が co か?

flag = "co"
enc = ''.join([chr(   (ord(flag[i]) << 8) +    ord(flag[i + 1])  ) for i in range(0, len(flag), 2)])
print(ord(enc))

結果

25455

このコンバーターから数値を取り出す。

28777,25455,17236,18043,12598,24418,26996,29535,26990,29556,13108,25695,28518,24376,24370,13878,14388,25394,12413

ソルバー書く

trans = [28777,25455,17236,18043,12598,24418,26996,29535,26990,29556,13108,25695,28518,24376,24370,13878,14388,25394,12413]
i = 0
flag = ""
while i < len(trans):
    flag = flag + chr(trans[i] >> 8)
    flag = flag + chr(trans[i] & 0xff)
    i = i + 1
print(flag)

ビンゴ

しかし, Burrows-Wheeler Transform が何やってるのか全くわからん。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0