IPv4アドレスとポート番号、そしてサーバのファイル一式が与えられた。
指定のアドレスとポート番号を
投稿したノートは、まずnotes/forms.py
で以下の処理などをされる。
A pair of an IPv4 address and a port number, and the files on ther server were given.
Accessing to the site by putting the address and the port number to the address bar of
Submitted notes are firstly processed with this code in notes/forms.py
:
その後、notes/views.py
で以下の処理をされる。
After that, it is processed in notes/views.py
with this code:
すなわち、以下の順で処理が行われる。
{{
を削除する}}
を削除する..
を削除する{{
と}}
で囲まれた部分から{
と}
を削除したものをファイル名として読み込み、内容をBase64エンコードして埋め込む
{{
や}}
を削除した後に..
を削除するので、
{..{/flag.txt}..}
を投稿すると{{/flag.txt}}
となり、/flag.txt
の内容が埋め込まれる。
/flag.txt
の内容はflagだった。
In other words, notes are processed in this order:
{{
}}
..
{
and }
from what is surrounded by {{
and }}
, read a file whose name is the result, and put the contents of the file with Base64-encoding.
Since ..
is removed after removing {{
and }}
,
{..{/flag.txt}..}
becomes {{/flag.txt}}
and the contents of /flag.txt
is embed.
The contents of /flag.txt
was the flag.