開拓馬’s blog

いろいろやる

ほとんどのエンジニアには解けるらしいパズルを解いてみた

ジャバ・ザ・ハットリ氏作成の「ほとんどのエンジニアには解けるパズル」*1シリーズを全問解いたので感想とかwrite upとかを書きます。

出題者のブログはこちら

問題一覧はこちら(全8問)

目次

感想

問題はマイルドなCTFみたいでした。CTFはakictfksnctfの問題をちまちま解いたり、SECCONの過去問を漁ったりしていたので、こうした形式のパズルには多少慣れていました。ここに上げたサイトの問題と比較すれば「ほとんどのエンジニアには解けるパズル」は簡単な部類なのかなと思います。

解くにあたってcurlコマンドの基礎を学ぶことができたのは収穫でした。もともとcurlコマンドに対する理解は「-Oコマンド付けてファイルを落とすやつでしょ」ぐらいだったので、一般的なサーバにリクエストを投げるという使い方を確認することができました。

その意味では、最初の3問は有意義でしたが、第4問以降は単なる数学パズルの色合いが濃く、学習という観点ではそこまで得るものはなかったのかもしれません。ただ、数学パズルやCTFの練習問題としては結構楽しかったと感じています。

Write up(ネタバレ注意)

復習、忘備録を兼ねてここに解法を残して置こうと思います。ここから先はネタバレが含まれているため、自力で解きたい方は読まないようにお願いします。

実のところ問題作成者はネタバレ非推奨と発言しているため、ここに解法を書くのはあまり褒められた行為ではないのかもしれません。しかし、curlコマンドの使い方等の技術的な知識は、

  1. 「未知の知識が必要な場面が生じる」
  2. 「使い方を調査する≒答えを見る」
  3. 「実際に使う」
  4. 「次回以降マニュアルを見ずに使えるようになる」

というプロセスを踏んで覚えるものであると私は思います。3の後に後戻りせず4に到達できるのであれば、2で閲覧する答えが解説書であっても、info curlの出力であっても、本記事のネタバレであっても本日的には変わらないのでは?むしろ、答えが参照しやすくなっている方が2の段階でつまずくことがなくなっていいのでは?という考えからここに解法を載せることにしました(一応ボタンを押さないと表示されないようにはしておきます)。

解説はHTTP通信などをほとんど知らない人が読んでもふんわりと理解できる程度には詳しく書くように心がけました。解いているうちに詰まってしまったら読んでみるのもいいのかもしれません。curlの使用例を知りたいという人も解説を見ながら第1問を解いてみるのもいいかもしれません。

第1問

第2問

第2問以降は暇があったら書きます(第1問程度の文量で書くと結構長くなりそうなので)。

*1:○○なら誰でもできるっていう釣りタイトル個人的にはきらい