WebページのURL、Admin botのURL、そしてサーバのファイル一式が与えられた。
Webページにアクセスすると、PHPのプログラムが表示された。
このプログラムは、message
を設定すると、Content-Type
をtext/plain; charset="utf-8"
に設定し、
message
の内容のうちflag
を置換したものを出力するものだった。
置換先は、アクセス元のIPアドレスが指定のものであれば環境変数FLAG
の内容、そうでなければbuckeye{not_the_flag}
である。
Content-Type
がtext/plain
となるので、用意されたWebページを直接Admin botに渡すことでflagを得るのは難しそうである。
そこで、外部のページを用意し、そこから用意されたページを読み込ませてflagを得る方法を考えた。
その結果、script
タグのsrc
にすることで、読み込ませることができそうであることに気がついた。
具体的には、まず以下のプログラムを用意した。
flagに"
や\
といった特殊な文字が含まれると上手く行かないだろうが、それは上手く行かなかった時に考えればいいとした。
なお、xxxxxxxxxxxxx
の部分は、実際の
An URL for a web page, an URL for the Admin bot, and the files for the server were given.
Accessing the web page, a PHP program was presented.
The program takes message
and prints the contents with flag
replaced and Content-Type
set to text/plain; charset="utf-8"
.
If the client's IP address is what is specified, flag
is replaced to the contents of the environment variable FLAG
. Otherwise, it is replaced to buckeye{not_the_flag}
.
It looks difficult to obtain the flag by directly putting the provided web page to the Admin bot because Content-Type
is set to text/plain
.
Therefore, I searched for a way to create an external page and have it load the provided page to obtain the flag.
As a result, I found that using the provided page as src
of a script
tag may work.
To achieve this, I firstly created this program.
This won't work if the flag contains special characters like "
and \
, but I decided to consider that only after I actually find it not working.
The xxxxxxxxxxxxx
part should be replaced to an actual subdomain of an endpoint for
このプログラムを
I created this HTML file with encoding this program via "URL Encode" on
このファイルをphp -S
コマンドと
しかし、その内容は buckeye{not_the_flag}
だった。
与えられたファイル中の docker-compose.yml
を見ると、用意されたWebページのサーバの内部におけるIPアドレスは 172.16.0.10
らしいことがわかった。
そこで、このIPアドレスを使用した以下のHTMLファイルを用意した。
I made this file available from the Internet using the php -S
command and
Then, I put the URL to the Admin bot. As a result, the Admin bot accessed to the RequestBin, but the contents was buckeye{not_the_flag}
.
Reading docker-compose.yml
in the given file, I found the internal IP address for the server of the provided web page is 172.16.0.10
.
Seeing this, I created this HTML file using this IP address.
このファイルのURLをAdmin botに渡すと、flagが得られた。
I obtained the flag by putting the URL for this file to the Admin bot.