はじめに
私が困った問題や調べないと解けなかった問題などを周辺情報込みでアウトプットしていきます。
まずやったこと
名前の通り、wiresharkを起動して、とりあえず見てみたけれどもいやここからどうすんねんと突っ込み断念。わからないときはむやみに頑張るとやる気がなくなるので、調べるのが吉。
このgithubを参考にした。
調べたら
tcp.stream eq 5
ってfilterに入れるといいよって言われたのでやってみたら、以下のような画面が出た。ほうほうよくわからん。そもそもtcp.stream eq 5
って何やってんねん。ってことでさらに調べる。
tcp.stream eq 5 の謎を解明するためにgoogleへ
以下の記事が真っ先に出てきたので、参考にさせていただいた。この記事曰く、
上記のStream index: 5
のところが一致するとフィルターとして引っかかるようだ。二つ疑問が浮かぶ。いやじゃあStream index
ってなんなん?ってことと、なんで5を指定したん?ってことだ。
Stream index ってなんなん?
ビビットこれっていう記事は見当たらなかったが、いくつかの記事を見てふわっと思った感想としては連続した通信を一つのインデックスとして割り振っているという感じだろうか。一連のtcp通信にStream index
として1を与え、また次の通信に2をといった感じでwireshark側が割り振っているという印象を受けた。
これらは私の感想と印象である。妄信しないでいただけると幸いです。これ以上調べると面倒なので、切り上げるが誰かきちんと調べて記事にするか教えてくれるとありがたい。
なんで5を指定したん?
不思議なことである。いやまさか天啓が下りてきて、「5を指定しなさい...」「ハイ神様!!」のようなことはないだろうから、なにかしらそれがよいと判断した理由があるだろう。総当たりの可能性もあるだろうが、そんなスマートじゃないことはプログラムにやらせるものだ。人力でやるものじゃない。
だが直接的に理由が乗っているものはなかった。もちろん探すのがへたくそだったのだろう。調べて分からんのならちょっと頑張ろうということで覚えたてのフィルターを使って、http通信が200を出しているものに絞ってみる。(何言っているかわからんという人はhttp ステータスコードで調べてみるとわかると思う。)
以下のような感じになった。
こうなるとtext/plain
とtext/html
が浮いて見える。この二つを右クリックしてFollow → TCP Stream
とした結果を確認する。
上がtext/plain
で下がtext/html
である。隠れて見えていないが、Follow → TCP Stream
をした後フィルターのところにはtcp.Stream eq 5
やtcp.Stream eq 14
と勝手に打ち込まれていた。こういった経緯で発見するのがシンプルなルートな気がする。
さて終了終了っと...?
cvpbPGS{c33xno00_1_f33_h_qrnqorrs}
とかいうあからさまに正解っぽいものが見つかったが、どうにもいつもと形が違う。何かしらのエンコーディングがされているのだろうが、ちょっとよくわからん。もう一回google先生にお聞きするしかあるまい。
前述のgithubのwriteupから、どうやらROT13とかいうものが用いられているらしい。それはどうやって導いたんですか?そんな疑問が鎌首をもたげるけど、まあとりあえずROT13をgoogleしてみましょう。
what is ROT13
wikipedia先生より単換字式暗号の一種らしい。詳しい説明はwikipedia先生に譲るが、私の関心はどうしてこのエンコーディングを思いついたかといういう一点である。ぱっと思いついた限りだと、いつものpicoCTF{}という形式を知っているために、cvpbPGS
という文字列が先頭四文字が小文字で後ろ三文字が大文字だというところを見て、それっぽいなとわかるくらいであろうか。ほかの暗号化方式などに明るくないのでそれくらいしか思いつかない。もし誰かわかる人がいたら教えていただきたい。
他にもROT47というものもあるらしい。興味のある方は調べてみてください。
答え
picoCTF{p33kab00_1_s33_u_deadbeef}
cyberchef先生にお聞きしたところ答えが出た。