WebページのURLが与えられた。
このページには、「Download Dockerfile」というリンクと、「Launch」ボタンがあった。
「Download Dockerfile」リンクからは、以下のファイルを含むアーカイブファイルがダウンロードできた。
An URL of a web page was given.
The page had a link saying "Download Dockerfile", and a button saying "Launch".
An archive file that contains these files was available from the "Download Dockerfile" link.
「Launch」ボタンを押すと、Webページ「Vulpixelize」へのリンクなどが載ったページが現れた。
「Vulpixelize」は、URLを送信すると画像を生成するページのようだった。
アーカイブ中の app/app.py
より、この画像は送信したURLのページのスクリーンショットを1920×1080のウィンドウで撮り、64×64に縮小し、また1920×1080に拡大したものであることが読み取れた。
更に、サーバ内部からURLのパス /flag
にアクセスすると、FLAG
を出力するらしいこともわかった。
実験の結果、FLAG
を含むページをiframe
で取り込み、それをCSSで拡大して位置をうまく調整すれば、FLAG
の画像が得られそうであることがわかった。
拡大は transform: scale
で、位置の調整は transform: translate
でできた。
試行錯誤により拡大率と位置を調整した結果、以下のPHPファイルをFLAG
の一部を画像として得られることがわかった。
Pressing the "Launch" button, a page that has a link to a web page "Vulpixelize" and some other information appeared.
This page "Vulpixelize" looked like a page that generates an image when I send an URL.
Reading app/app.py
in the archive, I found that the image is generated by taking a screenshot of the page corresponding to the URL sent with a 1920x1080 window, shrinking the image to 64x64, and then enlarging the image to 1920x1080.
I also found that FLAG
will be shown when accessing an URL with path /flag
from the server itself.
After some experiments, I found that it should be able to obtain the image of FLAG
by putting the page with FLAG
in iframe
, and using CSS to enlarge that and adjust its position.
Enlarging can be done via transform: scale
. Adjusting the position can be done via transform: translate
.
After some trial-and-error to adjust the scale and position, I found that we can obtain a part of the FLAG
by making this PHP file available from the internet via
さらに、横方向の位置を変化させながら「Vulpixelize」から画像を取得し、縮小して合体させる以下のプログラムを作成した。
第1引数は http://198.51.100.51:12345/
のような「Vulpixelize」のURLを、
第2引数は http://xxxxxxxxxxx.trycloudflare.com/display.php
のようなPHPファイルのURLを指定する。
Then, I created this program to retrieve images from "Vulpixelize" with sweeping the horizontal position, to shrink them and to concatenate them.
The 1st argument should be the URL of "Vulpixelize" like http://198.51.100.51:12345/
,
and the 2nd argument should be an URL of the PHP file like http://xxxxxxxxxxx.trycloudflare.com/display.php
.
このプログラムを実行すると、以下の画像が得られた。
I obtained this image by executing this program.
この画像からflagを読み取った。
I read the flag from this image.