POST Challenge

WebページのURLと、サーバのファイル一式が与えられた。
Webページにアクセスすると、Challenge 1 から Challenge 5 までの問題をそれぞれ解くといいらしいことがわかった。
各問題で求められていることは、web-http-post/app/app.js を参照した。

An URL of a web page and the files for the server were given.
Opening the web page, I found that we should solve each questions from Challenge 1 to Challenge 5.
I referred web-http-post/app/app.js to know what is the goal of each questions.

Challenge 1

req.body.data === "hoge" となるようなリクエストを要求された。

Firefoxの開発者ツールのネットワークタブを開き、リロードして適当なリクエストを送った後、以下のように「編集して再送信」することでflagのパーツが得られた。

The goal is sending a request that satisfies the condition req.body.data === "hoge".

I opened the Network tab in the developer tools in Firefox, sent some request by reloading, and used "Edit and Resend" to modify the request in this way to obtain a part of the flag:

Challenge 2

Challenge 1 の条件に加え、User-AgentMozilla/5.0 を含むリクエストを要求された。

Challenge 1 で送ったリクエストのURLを Challenge 2 用に変え、「編集して再送信」することで、flagのパーツが得られた。

The goal is sending a request that satisfies the condition for Challenge 1 and its User-Agent contains Mozilla/5.0.

I obtained a part of the flag by using "Edit and Resend" to modify the request for Challenge 1 to set the URL for Challenge 2.

Challenge 3

req.body.data?.hoge === "fuga" となるようなリクエストを要求された。

Challenge 1 で送ったリクエストのURLを Challenge 3 用に変え、要求ボディを {"data":{"hoge":"fuga"}} に「編集して再送信」することで、flagのパーツが得られた。

The goal is sending a request that satisfies the condition req.body.data?.hoge === "fuga".

I obtained a part of the flag by using "Edit and Resend" to modify the request for Challenge 1 to set the URL for Challenge 3 and to set the request body to {"data":{"hoge":"fuga"}}.

Challenge 4

req.body.hoge === 1 && req.body.fuga === null となるようなリクエストを要求された。

Challenge 1 で送ったリクエストのURLを Challenge 4 用に変え、要求ボディを {"hoge":1, "fuga": null} に「編集して再送信」することで、flagのパーツが得られた。

The goal is sending a request that satisfies the condition req.body.hoge === 1 && req.body.fuga === null.

I obtained a part of the flag by using "Edit and Resend" to modify the request for Challenge 1 to set the URL for Challenge 4 and to set the request body to {"hoge":1, "fuga": null}.

Challenge 5

MD5が public/images/wani.png のMD5と同じであるファイルを含むリクエストを要求された。

以下のページを参照し、ファイルを送信する用のフォームを作った。

The goal is sending a request that contains a file whose MD5 is the same as one of public/images/wani.png.

I referred this page to create a form to send a file.

HTMLタグ/フォームタグ/ファイルの送信欄を作る - TAG index

以下が作成したフォームを含むファイルである。
フォームに enctype="multipart/form-data" 属性を指定するのがポイントである。

This is a file I created that contains the form.
The key point is to add an attribute enctype="multipart/form-data" to the form.

attack5.html

このフォームからファイル web-http-post/app/public/images/wani.png を送信することで、flagのパーツが得られた。

I obtained a part of the flag by sending the file web-http-post/app/public/images/wani.png from this form.

flag

Challenge 1 ~ Challenge 5 で得られたflagのパーツをWebページに載っていた指示通りに組み合わせることで、flagが得られた。

I obtained the flag by building that from the parts obtained from Challenge 1 to Challenge 5 as specified in the web page.

FLAG{y0u_ar3_http_p0st_m@ster!}

WaniCTF 2021