Rating:

# Regular Website:webex:200pts
They said you couldn't [parse HTML with regex](https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454). So that's exactly what I did!
[package.json](package.json)
[server.ts](server.ts)
[http://webp.bcactf.com:49155/](http://webp.bcactf.com:49155/)

Hint 1 of 1
How is the site sanitizing your input?

# Solution
サイトにアクセスするとサイトが周期的にぼやける仕組みだった。
Just a Regular Website
[site1.png](site/site1.png)
[site2.png](site/site2.png)
コメントを投稿でき、adminがそれを見るようだ。
配布されたソースを読んでみるとserver.tsの以下が気になった。
```ts
~~~
const sanitized = text.replace(/<[\s\S]*>/g, "XSS DETECTED!!!!!!");
const page = await (await browser).newPage();
await page.setJavaScriptEnabled(true);
try {
await page.setContent(`

<html>
<head>
<meta charset="utf-8">
<title>Comment</title>
</head>
<body>

Welcome to the Regular Website admin panel.


<h2>Site Stats</h2>

Comments: ???


Flag: ${flag}


<h2>Latest Comment</h2>
${sanitized}
</body>
</html>
`, {timeout: 3000, waitUntil: "networkidle2"});
} catch (e) {
~~~
```
XSSを正規表現でサニタイズしているが、`Welcome to the Regular Website admin panel.


<h2>Site Stats</h2>

Comments: ???


Flag: bcactf{h3_c0mes_Ur74hshR}


<h2>Latest Comment</h2>



```
flagが得られた。

## bcactf{h3_c0mes_Ur74hshR}

Original writeup (https://github.com/satoki/ctf_writeups/tree/master/BCACTF_2.0/Regular_Website).