picoGym by picoCTF [Web]が意外と面白いので布教します

暇だったのでpicoGym[Web]を上から3問解いた。

そもそもpicoGymというのはpicoCTFの過去問がまとめられてる常設CTFです。
過去問というだけあって復習をして自分の成長度合いを測れるのが良いですね。

早速、Writeup書いていきます

1.GET aHEAD

サイトを覗くとsubmitボタンが二つ。どちらもindex.phpにchoose Red[GET]とchoose Blue[POST]というvalueで送信されている模様。
とりあえずGETメソッドで色々な色を指定して送信するもはずれ。:(
POSTメソッドいじっても全然ダメ。。。え、なにこれどうすれば。。。
GET aHEADという問題なのでHEADメソッドで送信してみる。
レスポンスヘッダの中身が変わったので見てみるとフラグが入ってました。
レスポンスヘッダをGETとHEADで変えられるのは初めて知りました。。。()

2.Cookies

クッキー情報に関するものだな~?とニマニマしながらフォームにhogehogeと入力してみる。全然correctしない。
placeholder通りにsnickerdoodleと入力するとcorrectした。だがflagに関する情報はない。とりあえずレスポンスを見てみるとcookieのnameが-1から0に変わっていた。画面にはI love snickerdoodle cookies!と表示されている。
ほう、cookieのnameを変えて見るか。という感じでcookieのnameにを1にして送ってやるとi love chocolate chip cookies!と表示されるし、クッキーの名前ごとにcookieのnameが変わってるのでは?と仮説を立てる。
とりあえずpythonでrequestsモジュールを使ってcookieのnameをインクリメントしながら/checkにGETメソッドで送信する。レスポンスが膨大だ。。。
レスポンスが膨大なので、picoCTFという文字列が含まれていたら出力するようにプログラムを修正。
レスポンスにフラグが入ってました。やはりクッキーの名前をcookieのname(連番)で管理していて、その中にflagを混ぜていたみたいですね。

3.Insp3ct0r

なんだこりゃ。という感じで始まりましたが、WhatとHowというタグで表示が変わるというjsが組み込まれている感じです。
jsの脆弱性を突く感じかな。。。とview-source:でソースコードを見ると、ソースコード内に1/3 part of flagとか 2/3 part of flag 3/3 part of flagとかあったのでこれを組みあわせてフラグ入手です。初心者に易しすぎる~と思いつつ。
htmlとcssとjsに散らばってます。まさか、ブロックチェーンを示唆しているのか!?(そんなわけがない)などと一人で盛り上がりました。

さいごに

今回はひとまずこんなところで終わりましょう。また後日、web問の続きをwriteupに上げようかな~と思います。
picoCTFは初心者にも易しい問題がたくさんあるのでぜひ!!
それでは!!!!