picoCTF、RitsecCTFに続き、今回はRicercaCTFに参加しました。
解けた問題は、「welcome」、「crackme」、「Revolving Letters」、、、以上!
1問に1時間くらいかかりました。そもそも、gzファイル展開したらtarファイルが出てくることもわかってなかった。
もうちょっとctfの実力を上げてから、writeup書いていこうかなぁなんて思ってましたが、今回のctfはwriteupを書くといいことあるかもってことが分かったので、たった3問でも書きます。
数字がふってあるところだけを見れば、分かるようになってます。
welcome
問題文
Ricerca CTF 2023へようこそ! この問題のフラグを見つけるには
まず、ルールを読みましょう。
次に、Discordの#announcementチャンネルに投稿されたフラグを探しましょう。
解き方
- 「ルール」のリンク先に飛ぶ。
- 「Official Discord」をクリックしてDiscoredに参加。
- 「#announcement」をクリック。
- flagゲット。(写真中央)
crackme
問題文
パスワードをクラックできますか。
解き方
- 添付のファイルをダウンロード。
- ファイルの名前が長かったため、「password.gz」に名前変更。
- linuxで、次のコマンドを打つ。
- 次の2つのコマンドを打つ。
- 「crackme」というフォルダができたので、cdで移動。
- catコマンドで、「crackme」の中身を確認。
- 次のコマンドを実行し、パスワードを入力
- flagゲット。(写真下部)
1 | $ gzip -d password.gz |
「password」というファイルができたので、調べてみると、tarファイルということがわかった。
1 | $ cp password password.tar |
1 | $ tar -xvf password.tar |
1 | $ cd crackme |
移動した先に、「crackme」というファイルがあったので、とりあえず実行すると、passwordが必要だと分かった。
1 | $ cat crackme |
だいぶ文字化けしてるが、読めるところを探すと、ヒントが、、、!
1 | $ ./crackme |
Revolving Letters
問題文
文字を回すの、だーぁれ?
解き方
- 添付ファイルをダウンロード。
- ファイルの名前を「attach.gz」に変更。
- 前の問題と同じ要領で、linuxコマンドを実行する。
- 「output.txt」と「chall.py」が入っていた。
- 入力されたテキストの文字がアルファベットの小文字以外の場合、そのまま出力する。
- 入力されたテキストの文字がアルファベットの小文字の場合、
- アルファベット順で見た時の、その文字の位置と、key文字列の位置を足す。
- 出た値を26で割った余りを出す。
- 出た値の場所にあるLOWER_ALPHABETを暗号化された値としてresultに追加する。
- 次のpythonプログラムを実行することで、フラグを出すことができた。
1 | $ gzip -d attach.gz |
1 | $ cp attach attach.tar |
1 | $ tar -xvf attach.tar |
1 | $ cd revolving-letters |
shall.py
1 | LOWER_ALPHABET = "abcdefghijklmnopqrstuvwxyz" |
output.txt
1 | key='thequickbrownfoxjumpsoverthelazydog' |
「shall.py」は、ざっくりいうと次のようなことを行うプログラムになっていた。
例(入力されたテキストの3番目に「c」がある場合)
LOWER_ALPHABETで「c」は3番目にあるから、(LOWER_ALPHABET.index(secret[i])の値は2。
また、key文字列の3番目は「e」だから、LOWER_ALPHABET.index(key[i])の値は4。
これらを足して26で割ると6余る。
LOWER_ALPHABET[6]は「g」を表すから、暗号化された値は「g」となる。
output.txtにあったRpgSyk{qsvop_dcr_wmc_rj_rgfxsime!}は、フラグをこのpythonファイルで暗号化させたもの。
1 | LOWER_ALPHABET = "abcdefghijklmnopqrstuvwxyz" |
今後、、、
writeupをもっとうまく書けるようになりたい。