Hacker101CTFのMicro CMS v1に挑戦しました。後のためのメモとして残します。なお筆者は全然知識ないので見るならほかの人のwriteupを推奨します。
0.どこまで試行できたか
ターゲットを見てみると、Testing・Markdown_Test・Create a new pageを発見。まず全ページのソースコードを見てみるがめぼしい情報はなし。Markdownのページにあった画像から情報を探し出そうとしたがこれもなし。
URLを見ると<ターゲットIP>/page/のように管理されているので、適当にadminと入力してみても無理。試しにIPだけで表示してみてもめぼしい情報はなし。
次に新しいページができるっぽいのでとりあえず作ってみる。すると新しくできたページはなぜか<IP>/page/6となっていた。確か元あったページは順に1,2となっていたはず。なので3,4,5とやってみると、ちょうど4の時にForbiddenがでる。おそらくここにフラグがあるだろう。
そのあととりあえずeditで反応を期待してechoを入力してみたが、これといって解決の糸口はつかめず、ヒントを見てもいまいちわからなかったのでここでギブアップ。
1,Flag0
上述したように新しいページを作ると、(人によってはページが違うらしいが)今回の場合6となる。そして4のときにForbiddenが出ることから何かしらの手段で入る必要がある。例えば最初のページを編集してみると<IP>/page/edit/1となる。つまりページ4も同等の手段で入れる可能性がある。実際にやってみるとフラグが表示された。
教訓:すべてのページのURLをチェックしてみる
2.Flag1
正直これは納得いってないが記入する。ヒントによるとXSS、SQLであり、フォーム送信以外の方法で送り、ユーザーからの予期しない入力で引き起こされるものっぽい。<IP>/page/edit/に’(シングルクォーテーション)を追加するとフラグが表示される。
そもそもなぜeditのページなのかがいまいち納得いかない。
教訓:SQL Injectionを探すときはあらゆるページにあらゆる不正な値を入れてみる
(例えば " , && ,' , ; , : , \ みたいな)
3,Flag2
何かしら投稿できることから、おそらくこれを使うのだろうと考えていたが結局できなかった。ヒントによると何かしら手を加えると別ページに影響が起きるようだ。XSS攻撃かと思ったがいまいち何を入力していいかわからない。ほかの方のwriteupを参考に新しいページを作成しタイトルに、<p>edit</p>と入力してもページに変化は起こらない。しかしホームに戻るとアラートがでてフラグが表示される。なんでやねん。
教訓:投稿できる場合なにかしらのHTMLを注入してみる
(それ以前にHTMLの知識が欠けているのを何とかしないと)
4.Flag3
ヒントによればHTMLのscript以外を使えばよさそう。まったく知識がないので別の人が使ったHTMLを注入してみる。一見変化がないがソースコードを見てみるとフラグが表示されている。いやなんでやねん。
教訓:HTMLの知識