俺的 Capture The Flag Writeup

Capture The Flag に挑戦したときの記録を自分用にドキュメント化して置いておくだけのブログ。

[CpawCTF] 第五夜: HTML から Flag を見つける

Q9.[Web] HTML Page

以下、問題文

Q9.[Web] HTML Page

10pt

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

※この問題のサーバへの攻撃はお止めください。

答案

今回は問題文に web ページの URL が提示されていますね。 どうやら、この中に Flag が隠れているようです。

とりあえず、URL を踏んで、所定のページにアクセスしてみますが、これは一般的なページのようです。 このページ自体は、第一夜にて取り上げましたが... 内容は CTF のジャンルや、問題の種類、モチベーション、身につくスキル、関連ページへのリンクなど、 CTF に関してよくまとまっていると思います。

ぱっと見、Flag っぽい文字列はないですが、Cmd + f でページを検索してみます。

検索キーワードは、トップページに、Flag は全部 cpaw{hogehoge} で書かれています、というヒントがあるので cpaw と入れてみます。

f:id:comeonknowhow:20200518030600p:plain
hint_in_toppage

が、Flag っぽいものはありませんでした。

f:id:comeonknowhow:20200518031225p:plain
result

さて、あと思い当たることとして、HTML 内にコメントなどで書かれているというケースです。

web ページは HTML で書かれているわけですが、 これは実際に表示されている文字が書かれている以外にも、 <> ~ </> で書かれるタグがあったり、 見栄えをよくするため CSS とか、(このページは) Bootstrap などのフレームとかのあれこれが書かれており 一文字一文字、あるいは一行一行読んでいくには面倒です (面倒くさがりなだけ)。

そこで、困ったのでまた「検索」します。 HTML と言えど、文字列の塊なので、この中から所望の文字列に一致する部分を探しましょう。

問題文にある URLcurl に渡して、Q9 に提示されているページの HTML を拾います。

これをそのまま、パイプラインで grep に渡してみます。

先ほどと同じく、キーワードは cpaw で検索してみましょう。

$ curl http://q9.ctf.cpaw.site/ | grep -n cpaw

-n option は 見つかった cpaw を含む行が、Q9 の HTML の何行目にあるのか出力して欲しいのでつけております。

10:    <meta name="description" content="flag is cpaw{9216ddf84851f15a46662eb04759d2bebacac666}">

10行目にあるらしいです。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->

    <meta name="keyword" content="ctf,flag">
    <meta name="description" content="flag is cpaw{9216ddf84851f15a46662eb04759d2bebacac666}">
    <meta name="author" content="takahoyo">

ありました。 これ見るとむしろ、cpaw というよりは、flag で検索されることを想定している感じなのですかね...

ちなみに、大文字、小文字に鈍感にする option -i をつけると、 Chrome で検索した方も出てきますね。

$ curl http://q9.ctf.cpaw.site/ | grep -n -i "cpaw"
10:    <meta name="description" content="flag is cpaw{9216ddf84851f15a46662eb04759d2bebacac666}">
69:          <p>クイズ形式(Jeopardy形式)は、数問のコンピュータやセキュリティに関する問題が与えられて、その問題を解く形式である。Cpaw CTFもこれに当てはまる。

余談でした。

submit

Flag が見つかったので、提出して終了です。

f:id:comeonknowhow:20200518030925p:plain
submit

f:id:comeonknowhow:20200518030944p:plain
accepted

次は、JEPG ファイルの属性から、川の場所を特定する問題だそうです...。 そういうことをするのは初めてだ...