今回の問題
picoCTFより"where are the robots"を解いていきます。
実際に解いていく
1. 問題文にあるWebサイトに移動する
「ようこそ ロボットはどこですか?」
このサイトにはこれ以上ないみたいです。
2. Webインスペクタを開く
次の手が浮かんでこないので、とりあえずWebインスペクタを開きました。
しかし、これといった怪しい情報も見つかりません。
どうしよう、困ったな...
3. ヒントを見る
そういえば、ヒントがあったことを思い出しました!
ここは素直にヒントを見ます。
ふむふむ。「ウェブサイトのどの部分を見れば、作成者がユーザーに見られたくない場所がわかるでしょうか?(Google翻訳より)」
なるほど!!robotsというキーワードと、ヒントの内容を組み合わせると、答えが浮かんできました。
4. "robots.txt"を見る
問題文のURLの後ろに”robots.txt"をつけると、Webサイトが変わります。
そこには「Disallow: /8028f.html」と書いてありました。
5. "/8028f.html"を見る
最初のURLの後ろに”/8028f.html”をつけると、Webサイトが変わり、FLAGが現れました!
これにてFLAG獲得です!
もう少し考えてみる
突然出てきた「robots.txt」とは一体何者なのか。簡単にですが、まとめてみます。
- Webサイトにはクローラーが存在する
クローラーの目的は「インターネット上の情報を集めること」です。
クローラーは、「ボット(自動プログラム)」の一種で、人間の代わりにウェブサイトを見て回って、情報を集めています。
・どんな内容か?
・他と比べてどれくらい重要か?
・キーワードは何か?
みたいな情報をもとに、検索結果を作っています。 - クローラーから隠したい
クローラーに見られたくない情報もあるのです。
例えば、
・秘密の情報を収集されたくない
・サーバーに負荷がかかるからアクセスされたくない
・コピーされて悪用されたくない
などの理由があります。こんなときに、robots.txtやアクセス制限をかけて、クローラーが見られないようにします。 - robots.txtとは
robots.txtとは、クローラーに対して「ここは見ないでください」と指示するファイルです。
その構成は
・User-agent→指示を適用したいクローラーを指定
・Disallow→クロールしてはいけないWebページを指定
・Allow→クロールしてよいWebページを指定
・Sitemap→Webサイトの構成を示すxmlファイル
から作られます。 - robots.txtの注意
robots.txtで、Disallowに指定したページは、クロールされません。
しかし、人間は意図的に検索することが可能です。
決して、誰にも見えない秘密のページではないので、お間違えないように...
まとめ
今回のFLAGは、robots.txtのDisallowに指定されたページにありました。
robots.txtは「秘密を隠すファイル」ではありません。
「秘密の場所を教えてしまうファイル」でもあるのです。
補足
・本当に隠したいファイルはどうするべきなのか
→本当に隠したいなら、認証制御、IP制御、ファイアウォールなどを使うべきです。
・robots.txtに関連する事件は多数発生しているので、調べてみると面白いかもしれません。