好奇心の足跡

飽きっぽくすぐ他のことをしてしまうので、忘れないため・形にして頭に残すための備忘録。

Shakti CTF 2020 writeup [Misc]

2020年12月3の21:30 - 12月4日21:30 で行われていた、Shakti CTF 2020の [Misc] 分野のwriteupです。

※ まとめはこちら tech.kusuwada.com

Sanity Check

Go and checkout all the discord channels to find the flag!!

TopにDiscordへのリンクがあったので、参加

f:id:kusuwada:20201206224520p:plain

最初は #readme channelしか表示されてなかったけど、なんかみんなが推してるっぽい 👍 を押したらchannelがいっぱい出てきた。

f:id:kusuwada:20201206225408p:plain

#rules channeel のpinにflagがありました!

f:id:kusuwada:20201206225513p:plain

flag: shaktictf{i_solemly_swear_that_me_and_my_team_are_all_women}

emoji-gram

Find the hidden text in "🥳💀😇😜💩😩😫😺😎🤑😞🤯😭😕😿😽🤢👹😱😠😏😛😧🖐 🤧🤑😴😨🤭😕💀😹🥳👿🤒😬😭😕😿🤏🤧💩😷🤘🥱🙄🤞👆😟😮"

Difficulty : Very Easy

Author : 4lex1

うーん、色々試したけどわからんなー、と思っていたら、途中で下記ファイルが追加された。

Added a file with the same emoji string to avoid issues arising from copy-paste.

emojigram.txt

🥳💀😇😜💩😩😫😺😎🤑😞🤯😭😕😿😽🤢👹😱😠😏😛😧🖐🤧🤑😴😨🤭😕💀😹🥳👿🤒😬😭😕😿🤏🤧💩😷🤘🥱🙄🤞👆😟😮

別にヒントではないな。

絵文字からdecodeするライブラリは沢山あるので、結局どのライブラリを使っていいかわからんな?というところで競技終了。

Team-shaktiのwriteupをみると

The idea of this challenge was to make you write a small python program that could decode the encrypted emoji encoded text

とのこと。スクリプトを見るとemojicodeというのを使うのが正解だった様子。うーん、コーディングよりどのライブラリを使うべきかがわからなかったので、もう少し使うライブラリのヒントが欲しかったな。

import emojicode

emoji = "🥳💀😇😜💩😩😫😺😎🤑😞🤯😭😕😿😽🤢👹😱😠😏😛😧🖐🤧🤑😴😨🤭😕💀😹🥳👿🤒😬😭😕😿🤏🤧💩😷🤘🥱🙄🤞👆😟😮"

print(emojicode.decrypt(emoji))

実行結果

$ pip install emojicode
$ python solve.py 
shaktictf{youhavedecodedsomeseriousemojizz}

Wooooww [Easy]

Some terrorists implanted a spy microphone in our office and tried sending some important project details to their country. The ENIAC programmers caught that and we need your help to extract the secret message.

Flag format : shaktictf{STRING}

Author : v1Ru5

findit.mp3が配布されます。

$ file findit.mp3 
findit.mp3: Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1,  64 kbps, 44.1 kHz, Stereo

聞いてみると、チップとデールみたいな高い笑い声と、ダイヤルアップ系音声、モールス信号っぽい音声、効果音?だった。
解けてる人が多いので、もしかしたらonlineツールがあるかもしれないが、ツール探す系ゲームになりそう&時間かけるのももったいないので後でwriteup見る。

Team-shaktiのwriteup

Ignore other tones and decode the morse part of the mp3 file to get the flag.

ということで、モールス信号部分が本命だった様子。音声のモールス信号の解読には

morsecode.world

これを使って解いているwriteupが多かった。便利なツールをまた一つ知れたぞ。

モールス試飲号部分だけ抜き出したりするのが面倒だったので、そのままファイルを突っ込んだけど、細部がうまくデコードできなかったので、ちゃんと切り出して突っ込んだ。

f:id:kusuwada:20210209202511p:plain

TLOLM0RS3I5F UNN

意味の有りそうな部分を抜き出して、答えは

LOLM0RS3I5FUN (LOL Morse is fun)

Findme [Medium]

OSINT is popular these days. Kay hid your flag in a social networking website. Go get your flag.

Author : 4lph4

OSINT問題だ!username.txtが配布されます。

Username: (2c1743a391305fbf367df8e4f069f9f9) + "x86" + (987bcab01b929eb2c07877b224215c92)

Username didn't work? Try and try. But don't come and "bash" me.

ハッシュっぽかったので、オンラインのhashデータベースで検索したら出た。

  • 2c1743a391305fbf367df8e4f069f9f9: md5, alpha
  • 987bcab01b929eb2c07877b224215c92: md5, beta

ということで、usernameは alphax86betaもしくはαx86β?

twitter, facebook, instagram, ticktock?, pinterest, youtube,...あたりを探しいてみたけど見つからず。

TeamShaktiのwriteupによると、

Online OSINT tools can be used to find the social networking websites where an user account with the given username exists

とのこと。

www.namecheckr.com

このnamehackerというサイトが使えるらしい。

早速使ってみると

f:id:kusuwada:20210209202531p:plain

なるほど?!すでに使われているサービスが赤く表示されるのか。もともとは「このusername使えますか」というサービスっぽい。これはいろんなSNSを手当り次第試す必要がなくていいな👍

で、今回怪しいと思ったハンドルネームは、Tumblr,Reddit,Badooの3津で使われていたので、これらだけ調べればOK。

Tumblrのアカウントを持っていなかったので、どうやってユーザー検索するのかいまいちわからなかったのだけど、とりあえずアカウントを作って、自分のプロフィールを表示させてみて、pathの作りを理解して、

https://www.tumblr.com/blog/view/alphax86beta

にアクセスしたらflagが出た👍

f:id:kusuwada:20210209202557p:plain:w400

10010101 [Medium]

The story of initial six programmers is not over with them. They are going to recruit a team of fifty scientists to continue working on ENIAC. There are several spots for all of us and for that we need to solve this puzzle.I tried most of the conversions, but this seems to be a different language. I think the text file has something to do with the password of the zip file.

Author : v1Ru5

flag.ziptrythis.txtが配布されます。

111111111100100010101011101011111110101111111111011011011011000001101001001001011111111111111001010011000000000000000000000000000000000000000000000000000000001010010000000000000000000000000000000000000000000001010111110010100000000000000000000000000010101111111111111110010100111111111111111111100101001011001010000000000000000000001010011111111110010100100000000000000000000000000000000000010101111111111111001010

flag.zipはpassword付き。

$ unzip flag.zip 
Archive:  flag.zip
[flag.zip] flag.txt password: 
   skipping: flag.txt                incorrect password

問題文から、[1,0]の羅列がpasswordの鍵を握っているらしい。

取り組もうかと思ったけど時間切れでした。CyberChefに突っ込んでみます。binaryから戻すやつとかやってみたけど成果なし。[1,0]をタブとスペースに変換してwhiitespace言語のdecoderに突っ込んでみたけど、こちらも成果なし。モールス信号にしても区切りが無くて長過ぎる。

Team-shaktiのwriteupによるとSpoon Languageというのが使われているらしい。
Decoderはこちら。

https://www.dcode.fr/spoon-language:tiitle

Spoon is a minimalist programming language strongly inspired by Brainfuck and composed only of 0 and 1.

ふむふむ。[1,0]のデータが出てきたら、spoon languageを疑うのも今後選択肢に入れるように使用。

ここに[1,0]の文字列を突っ込むと、decodeされた。

f:id:kusuwada:20210209202614p:plain

r4diapErlMan

これがflag.zipのパスワード。パスワードを入れると回答され、flag.txtが出現した。

shaktictf{yEsSsSssssSSS...Sp0oNNn!}

感想

Misc、どれも一応目は通してみたものの、時間が限られている中でもじっくり取り組みたい問題が特に見当たらなかったため、結局解いていませんでした。mp3の問題やemojiの問題も、なんとなくあたりはつくものの、ツールを探すだけ&そのための時間が膨大にかかりそうって感じだったので潔く諦めた。
この選択は終わってみたら結構良かったかなという感じ。一応復習したら更新しよう。

最後に追加されてた暗号化zip問題はちょっと面白そうだったな。全然時間なくて見れなかったけど。

-> 復習した。どれも結局ツールを知っているか、探せるか問題という感じだったので、今回は知らなければすぐ他の問題に映る、というのが正解だったかな。でも復習してみて、特にOSINTのnamehackerは全然知らなかったけどかなり便利そうだったし、他のツールや暗号も知っておいて損はないので復習できてよかった👍