子供が産まれて、育休を取り始めました

この度、赤ちゃんが生まれました。 めでたい。 そんでもって、10月から半年ほど育休を取って、育児に専念することになりました。 会社・部署の方々など、様々な方のサポートがあってのことです。 とても感謝しています。 休み自体は9月のシルバーウィークから取っていて、すでに絶賛育児中です。 ただね…… この時点ですでに大変なんだが? 細かいポイントを含めれば色々あるけど、しんどかったポイントをあげるなら、こんな感じ。 1. 生活リズムが不規則になる 私の担当範囲は、起きている時間のミルク、おむつ替え、沐浴、暇な時にじっと赤ちゃんの様子を見つめるなど。(あれ、意外とやってないな……) 主に昼から夜、あとは深夜から朝方(1時〜7時)に起きている感じ。 深夜に起きる前と、朝の担当が終わったあとに、それぞれ3〜4時間程度寝ている。 元々深夜に作業するのが苦じゃないタイプなので、深夜も赤ちゃんが寝ている時などは、パソコンでAIと戯れたり、スマホでダラダラとこんな感じの記事を書いたりと好き勝手やっている。 が、最初の方は生活リズムを変えるのがしんどかった。 無理やり寝るためにサプリメントを飲んだり、とにかく横になったりと色々試したが、寝れない時はとにかく寝れない。これがしんどい。 結局、慣れるまではどうにもならなかった。 人間って生活リズムを変えるのが難しい生き物なんだな、と割り切ることにした。 一方、妻の側は、今のところだいたい3時間おきに授乳がある。 母乳だったり、ミルクだったり、その併用だったり。 これがシンプルながらに、妻への負担が半端ない。 妻は授乳のたびに起きているし、赤ちゃんの空腹具合によっては泣き声と共に叩き起こされたりと、不規則な睡眠を強いられている。 授乳の間隔が空くと胸が張るし、乳腺炎になることもあるそう。 発熱などが出ることもあるので、妻の体調も気になる。 うちは基本的に母乳をあげて、足りない分はミルクを作って補う感じで運用している。 育児を始める前は、12時間ずつ分担して、私のターンはミルク、妻のターンは母乳でいいんじゃない?とか考えていた。 が、現実はそんなに割り切れるようにはなっていなかった。 赤ちゃんの都合だけじゃなく、妻の体の事情もある。 あと、沐浴とかも...

楽しく解くCpawCTF Level1

目的

  • ネットワークやセキュリティなどの勉強はしたいが実際に何から手をつけたら良いのか分からない・・・

  • 無料でコンテスト形式の何かに取り組みたい

といった人におすすめなのがCTF!
基本的にはチーム形式でセキュリティやネットワークの問題を解く、というコンテストで頻繁に開催されているため、楽しく学べます。

僕も最近始めたばかりで、ひとまず基本的なことを学ぶために一人で簡単なものから解いています。

環境

MacOS Catalina 10.15.4
Ubuntu 64-bit(VM)

CpawCTF Level1

現在解いているのはこちらのCpawCTFで、初学者でも楽しくクイズ形式で学ぶことができます。

今回はLevel1を全て埋めたので内容について触れていきたいと思います。

なお、解答については触れません。
どういう風に解いたかに焦点を当てていきたいと思います。

Q1.[Misc] Test Problem

この問題の答え(FLAG)は、cpaw{this_is_Cpaw_CTF} です。
下の入力欄にFLAGを入力してSubmitボタンを押して、答えを送信しましょう!

記念すべき第一問。どういった形式で解答すればよいかを教えてくれます。

このコンテストでは基本的に
cpaw{flag}
といった形式で、cpawの部分は固定で、それ以降の{}の中にそれぞれの問題を解いた時に得られるflagを入れることで正解かどうかを判定します。

これがCTFがCatch the flagと呼ばれる所以ですね。

とにもかくにも解答の方法は基本的にこういった形なので理解するにはうってつけの問題です。

Q6.[Crypto] Classical Cipher

暗号には大きく分けて、古典暗号と現代暗号の2種類があります。特に古典暗号では、古代ローマの軍事的指導者ガイウス・ユリウス・カエサル(英語読みでシーザー)が初めて使ったことから、名称がついたシーザー暗号が有名です。これは3文字分アルファベットをずらすという単一換字式暗号の一つです。次の暗号文は、このシーザー暗号を用いて暗号化しました。暗号文を解読してフラグを手にいれましょう。

暗号文: fsdz{Fdhvdu_flskhu_lv_fodvvlfdo_flskhu}

問題文の通り、それぞれアルファベットを3文字分ずらすと答えが現れます。

元々暗号の成り立ちはこういった単純だけれども仕組みを知らない人には意味が分からない、というところから始まったということが分かります。

Q7.[Reversing] Can you execute ?

拡張子がないファイルを貰ってこのファイルを実行しろと言われたが、どうしたら実行出来るのだろうか。
この場合、UnixやLinuxのとあるコマンドを使ってファイルの種類を調べて、適切なOSで実行するのが一般的らしいが…
問題ファイル: exec_me

とあるコマンド、というのが何かを知るためのものです。
これはfileコマンドのことで、そしてLinux環境で実行しなければならない、ということでVirtualBox上でUbuntuを使ってSSH接続をし、その上でchmodコマンドを777で権限を与え、実行すれば答えが出ます。

この問題でLinuxに触れたり、権限周りについて勉強できるので非常に面白いです。
Level1で一番好きです。

Q8.[Misc] Can you open this file ?

このファイルを開きたいが拡張子がないので、どのような種類のファイルで、どのアプリケーションで開けば良いかわからない。
どうにかして、この拡張子がないこのファイルの種類を特定し、どのアプリケーションで開くか調べてくれ。
問題ファイル: open_me

これもfileコマンドでファイルの種類を調べ、そのファイルに応じた拡張子をつけてあげた上で開いてあげると解答が分かります。

Q9.[Web] HTML Page

HTML(Hyper Text Markup Language)は、Webサイトを記述するための言語です。
ページに表示されている部分以外にも、ページをより良くみせるためのデータが含まれています。
次のWebサイトからフラグを探して下さい。
http://q9.ctf.cpaw.site

このページに行ってみると分かりますが、ページ上にはフラグはありません。
特定の方法でしかみることができません。ソースコードの中に記述されているそのページの要約についての要素について調べると分かるかも・・・?

Q10.[Forensics] River

JPEGという画像ファイルのフォーマットでは、撮影時の日時、使われたカメラ、位置情報など様々な情報(Exif情報)が付加されることがあるらしい。
この情報から、写真に写っている川の名前を特定して欲しい。
問題ファイル: [river.jpg]

FLAGの形式は、“cpaw{river_name}”
例:隅田川 → cpaw{sumidagawa}

Exif情報を調べる、という問題です。
Macの場合はプレビューから位置情報が分かるのでそれをマップに落とし込んで川の名前を確認→打ち込みでOKです。

昔rebuid:fmというPodcastのメインパーソナリティである宮川さんという方がこの情報を元にどの芸能人が何のカメラを使っているかを割り出した、というのを聞いたことがあったので、ああ!あの時の!という感じで探偵気分で調べました。

Q11.[Network]pcap

ネットワークを流れているデータはパケットというデータの塊です。
それを保存したのがpcapファイルです。
pcapファイルを開いて、ネットワークにふれてみましょう!
[pcapファイル]

pcapファイルに触れてみましょう!というのは簡単ですが、多くの人はpcapファイルに触れたことすらないと思います。僕もそうでした。

なので実際に見てみるためにWiresharkをインストールし、pcapファイルをインポートして中身を見てみましょう。
答えはすぐに分かると思います。

Q12.[Crypto]HashHashHash!

ハッシュ関数とは、値を入れたら絶対にもとに戻せないハッシュ値と呼ばれる値が返ってくる関数です。
ですが、レインボーテーブルなどでいくつかのハッシュ関数は元に戻せてしまう時代になってしまいました。
以下のSHA1というハッシュ関数で作られたハッシュ値を元に戻してみてください!(ヒント:googleで検索)

e4c6bced9edff99746401bd077afa92860f83de3

フラグは
cpaw{ハッシュを戻した値}
です。

ググると答えが出てきます。
調べてみて知ったのですが、このSHA-1という暗号的ハッシュ関数はTLS/SSLなどに使われていたのですが、2017年にGoogleとオランダのとある研究所が脆弱性を発見してしまったため、現段階では後継であるSHA-2へと多くの企業が移行しつつあります。

耳寄りな情報を知ることができたのでよかったです(小学生並の感想)。

Q14.[PPC]並べ替えろ!

下にある配列の中身を大きい順に並べ替えて、くっつけてcpaw{並べ替えた後の値}をフラグとして提出してください。
例:もし配列{1,5,3,2}っていう配列があったら、大きい順に並べ替えると{5,3,2,1}となります。
そして、フラグはcpaw{5321}となります。
同じようにやってみましょう(ただし量が多いので、ソートするプログラムを書いたほうがいいですよ!)

[15,1,93,52,66,31,87,0,42,77,46,24,99,10,19,36,27,4,58,76,2,81,50,102,33,94,20,14,80,82,49,41,12,143,121,7,111,100,60,55,108,34,150,103,109,130,25,54,57,159,136,110,3,167,119,72,18,151,105,171,160,144,85,201,193,188,190,146,210,211,63,207]

ひとまずソートして逆順に並び替え、文字列化して連結するプログラムをPythonで書いて実行しました。

listに上記の値を入れて、sortとreverseをしてjoinでくっつければ解けます。

まとめ

こんなところです。
まとめ記事を書くとあ〜、こんなことやったなぁ!って気持ちになれるし復習にもなるのでオススメです。

この記事を見たそこのあなたもレッツCTF!

Comments

Popular posts from this blog

Braveブラウザ(iPhone,iPad)にオフラインでもYouTubeの動画が視聴可能なPlaylist機能が追加されていたので使い方をまとめてみた。

Braveブラウザの同期機能をiPhoneで設定した話。

【OSLog】How to log a Swift project