Skip to content

Commit

Permalink
docs: update
Browse files Browse the repository at this point in the history
  • Loading branch information
GZTimeWalker committed Sep 2, 2024
1 parent 5200252 commit 71db859
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 20 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,14 @@ All notable changes to [**GZCTF**](https://github.com/GZTimeWalker/GZCTF) will b
### ⛰️ Features

- **(cache)** de-bounced the slow cache update request - ([0383fe](https://github.com/GZTimeWalker/GZCTF/commit/0383fe)) by **GZTime**
- **(challenge)** add complex leet table - ([520025](https://github.com/GZTimeWalker/GZCTF/commit/520025)) by **GZTime**
- **(mail)** only exit when `EmailConfirmationRequired` enabled - ([d4a525](https://github.com/GZTimeWalker/GZCTF/commit/d4a525)) by **GZTime**
- add `SenderName` option - ([f6ce31](https://github.com/GZTimeWalker/GZCTF/commit/f6ce31)) by **GZTime**
- empty strings can disable SMTP - ([ae9e26](https://github.com/GZTimeWalker/GZCTF/commit/ae9e26)) by **GZTime**

### 🐛 Bug Fixes

- **(challenge)** incorrect z-index - ([61e8b1](https://github.com/GZTimeWalker/GZCTF/commit/61e8b1)) by **GZTime**
- **(mail)** wrong validation condition - ([0b084b](https://github.com/GZTimeWalker/GZCTF/commit/0b084b)) by **GZTime**

### 🎨 Styling
Expand Down
22 changes: 16 additions & 6 deletions docs/pages/guide/dynamic-flag.en.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,16 @@ In dynmaic challenge's flag and attachment management page, the flag template wi
3. If `[TEAM_HASH]` placeholder is specified, it will be replaced with the hash value generated from the team token and related information.
4. If `[TEAM_HASH]` placeholder is not specified, Leet string functionality will be enabled, and the string inside the curly braces will be transformed based on the template. Make sure that the entropy of the flag template string is high enough.
5. If you want to enable Leet string functionality when specifying `[TEAM_HASH]`, add the `[LEET]` marker before the flag template string. In this case, the entropy of the flag template string will not be checked.
6. If you want to enable special characters when using Leet string (which may cause injection issues), add the `[CLEET]` marker before the flag template string.

## Examples

1. Leave it blank to generate `flag{1bab71b8-117f-4dea-a047-340b72101d7b}`
2. Set the flag to `MyCTF{[GUID]}` can get `MyCTF{1bab71b8-117f-4dea-a047-340b72101d7b}`
3. Set the flag to `flag{hello world}` will generate flag with Leet and get `flag{He1lo_w0r1d}`
4. Set the flag to `flag{hello_world_[TEAM_HASH]}` will generate flag with team hash like `flag{hello_world_5418ce4d815c}`
5. Enable Leet with team hash as the same time with `[LEET]flag{hello world [TEAM_HASH]}` can generate `flag{He1lo_w0r1d_5418ce4d815c}`
4. Set the flag to `[CLEET]flag{hello sara}` will generate flag with special characters like `flag{He1!o_$@rA}`
5. Set the flag to `flag{hello_world_[TEAM_HASH]}` will generate flag with team hash like `flag{hello_world_5418ce4d815c}`
6. Enable Leet with team hash as the same time with `[LEET]flag{hello world [TEAM_HASH]}` can generate `flag{He1lo_w0r1d_5418ce4d815c}`

## Leet String

Expand All @@ -44,11 +46,19 @@ Leet String is a method of replacing characters in a string with numbers or symb
| `2` | `2zZ` | `3` | `3eE` | `4` | `4aA` | `5` | `5Ss` |
| `6` | `6Gb` | `7` | `7T` | `8` | `8bB` | `9` | `9g` |

<Callout type="info">

In earlier versions of GZCTF, the Leet String rules included some special characters such as `$`, `@`, `!`, etc. However, these characters caused various character injection issues in the actual challenge environment. Therefore, we have removed these characters.
When enabling complex Leet strings, please pay attention to character injection issues. It follows the rules below, as there are more possibilities, the length required to reach the specified entropy will be shorter:

</Callout>
| Characters | Replaced with | Characters | Replaced with | Characters | Replaced with | Characters | Replaced with |
| :--------: | :------------ | :--------: | :------------ | :--------: | :------------ | :--------: | :------------ | --- |
| `A` | `Aa4@` | `B` | `Bb68` | `C` | `Cc(` | `D` | `Dd` |
| `E` | `Ee3` | `F` | `Ff1` | `G` | `Gg69` | `H` | `Hh` |
| `I` | `Ii1l!` | `J` | `Jj` | `K` | `Kk` | `L` | `Ll1I!` |
| `M` | `Mm` | `N` | `Nn` | `O` | `Oo0#` | `P` | `Pp` |
| `Q` | `Qq9` | `R` | `Rr` | `S` | `Ss5$` | `T` | `Tt7` |
| `U` | `Uu` | `V` | `Vv` | `W` | `Ww` | `X` | `Xx` |
| `Y` | `Yy` | `Z` | `Zz2?` | `0` | `0oO#` | `1` | `1lI | ` |
| `2` | `2zZ?` | `3` | `3eE` | `4` | `4aA` | `5` | `5Ss` |
| `6` | `6Gb` | `7` | `7T` | `8` | `8B&` | `9` | `9g` |

### Security

Expand Down
24 changes: 17 additions & 7 deletions docs/pages/guide/dynamic-flag.ja.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,16 @@ GZCTFには動的フラッグの配布をサポートする機能が組み込ま
3. `[TEAM_HASH]`を指定すると、それはチームのトークンと関連情報から生成されたハッシュ値に置き換えられます。
4. `[TEAM_HASH]`が指定されていない場合は、リート(Leet)文字列機能が有効になり、テンプレートに基づいて波括弧内の文字列を変換します。フラッグのテンプレート文字列のエントロピーが十分に高いことを確認する必要があります。
5. `[TEAM_HASH]`を指定した状態でリート文字列機能を有効にする必要がある場合は、フラッグのテンプレート文字列の前に`[LEET]`マークを追加してください。この場合、フラッグのテンプレート文字列のエントロピーはチェックされません。
6. `[CLEET]`を指定すると、リート文字列機能が有効になり、フラッグのテンプレート文字列の前に特殊文字が追加されます。

## ルールの例

1. 空白のままにすると、`flag{1bab71b8-117f-4dea-a047-340b72101d7b}`が得られます。
2. `MyCTF{[GUID]}`を指定すると、`MyCTF{1bab71b8-117f-4dea-a047-340b72101d7b}`が得られます。
3. `flag{hello world}`を指定すると、`flag{He1lo_w0r1d}`が得られます。
4. `flag{hello_world_[TEAM_HASH]}`を指定すると、`flag{hello_world_5418ce4d815c}`が得られます。
5. `[LEET]flag{hello world [TEAM_HASH]}`を指定すると、`flag{He1lo_w0r1d_5418ce4d815c}`が得られます。
4. `[CLEET]flag{hello sara}`を指定すると、`flag{He1!o_$@rA}`が得られます。
5. `flag{hello_world_[TEAM_HASH]}`を指定すると、`flag{hello_world_5418ce4d815c}`が得られます。
6. `[LEET]flag{hello world [TEAM_HASH]}`を指定すると、`flag{He1lo_w0r1d_5418ce4d815c}`が得られます。

## リート(Leet)文字列

Expand All @@ -44,11 +46,19 @@ GZCTFには動的フラッグの配布をサポートする機能が組み込ま
| `2` | `2zZ` | `3` | `3eE` | `4` | `4aA` | `5` | `5Ss` |
| `6` | `6Gb` | `7` | `7T` | `8` | `8bB` | `9` | `9g` |

<Callout type="info">

初期のGZCTFバージョンでは、リート文字列のルールには`$``@``!`などの特殊文字が含まれていましたが、これらの文字が実際のチャレンジ環境で各種言語の文字注入問題を引き起こしたため、これらの文字は削除されました。

</Callout>
启用複雑なLeet文字列の場合、文字の注入に注意してください。それは以下のルールに従います。可能性がより多いため、指定されたエントロピーに到達するために必要な長さが短くなります:

| 文字 | 置換先 | 文字 | 置換先 | 文字 | 置換先 | 文字 | 置換先 |
| :--: | :------ | :--: | :----- | :--: | :----- | :--: | :------ | --- |
| `A` | `Aa4@` | `B` | `Bb68` | `C` | `Cc(` | `D` | `Dd` |
| `E` | `Ee3` | `F` | `Ff1` | `G` | `Gg69` | `H` | `Hh` |
| `I` | `Ii1l!` | `J` | `Jj` | `K` | `Kk` | `L` | `Ll1I!` |
| `M` | `Mm` | `N` | `Nn` | `O` | `Oo0#` | `P` | `Pp` |
| `Q` | `Qq9` | `R` | `Rr` | `S` | `Ss5$` | `T` | `Tt7` |
| `U` | `Uu` | `V` | `Vv` | `W` | `Ww` | `X` | `Xx` |
| `Y` | `Yy` | `Z` | `Zz2?` | `0` | `0oO#` | `1` | `1lI | ` |
| `2` | `2zZ?` | `3` | `3eE` | `4` | `4aA` | `5` | `5Ss` |
| `6` | `6Gb` | `7` | `7T` | `8` | `8B&` | `9` | `9g` |

### セキュリティ

Expand Down
24 changes: 17 additions & 7 deletions docs/pages/guide/dynamic-flag.zh.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,16 @@ GZCTF 自带对于动态 flag 分发的支持,将会在容器启用时采用 `
3. 若指定 `[TEAM_HASH]` 则它将会被替换为队伍 Token 与相关信息所生成的哈希值
4. 若未指定 `[TEAM_HASH]` 则将启用 Leet 字符串功能,将会基于模版对花括号内字符串进行变换,需要确保 flag 模版字符串的熵足够高
5. 若需要在指定 `[TEAM_HASH]` 的情况下启用 Leet 字符串功能,请在 flag 模版字符串之前添加 `[LEET]` 标记,此时不会检查 flag 模版字符串的熵
6. 若需要在 Leet 字符串时启用特殊字符(可能会导致注入问题),请在 flag 模版字符串之前添加 `[CLEET]` 标记

## 规则示例

1. 留空会得到 `flag{1bab71b8-117f-4dea-a047-340b72101d7b}`
2. `MyCTF{[GUID]}` 会得到 `MyCTF{1bab71b8-117f-4dea-a047-340b72101d7b}`
3. `flag{hello world}` 会得到 `flag{He1lo_w0r1d}`
4. `flag{hello_world_[TEAM_HASH]}` 会得到 `flag{hello_world_5418ce4d815c}`
5. `[LEET]flag{hello world [TEAM_HASH]}` 会得到 `flag{He1lo_w0r1d_5418ce4d815c}`
4. `[CLEET]flag{hello sara}` 会得到 `flag{He1!o_$@rA}`
5. `flag{hello_world_[TEAM_HASH]}` 会得到 `flag{hello_world_5418ce4d815c}`
6. `[LEET]flag{hello world [TEAM_HASH]}` 会得到 `flag{He1lo_w0r1d_5418ce4d815c}`

## Leet 字符串

Expand All @@ -44,11 +46,19 @@ Leet 字符串是一种将字符串中的字符替换为数字或符号的方法
| `2` | `2zZ` | `3` | `3eE` | `4` | `4aA` | `5` | `5Ss` |
| `6` | `6Gb` | `7` | `7T` | `8` | `8bB` | `9` | `9g` |

<Callout type="info">

早期的 GZCTF 版本中,Leet 字符串的规则包含了一些特殊字符,例如 `$``@``!` 等,但是由于这些字符在实际的题目环境中造成了各种语言的字符注入问题,因此我们移除了这些字符。

</Callout>
启用复杂 Leet 字符串时,请注意字符注入问题,它采用的规则如下,由于可能性更多,达到指定的熵所需的长度会更短:

| 字符 | 替换为 | 字符 | 替换为 | 字符 | 替换为 | 字符 | 替换为 |
| :--: | :------ | :--: | :----- | :--: | :----- | :--: | :------ | --- |
| `A` | `Aa4@` | `B` | `Bb68` | `C` | `Cc(` | `D` | `Dd` |
| `E` | `Ee3` | `F` | `Ff1` | `G` | `Gg69` | `H` | `Hh` |
| `I` | `Ii1l!` | `J` | `Jj` | `K` | `Kk` | `L` | `Ll1I!` |
| `M` | `Mm` | `N` | `Nn` | `O` | `Oo0#` | `P` | `Pp` |
| `Q` | `Qq9` | `R` | `Rr` | `S` | `Ss5$` | `T` | `Tt7` |
| `U` | `Uu` | `V` | `Vv` | `W` | `Ww` | `X` | `Xx` |
| `Y` | `Yy` | `Z` | `Zz2?` | `0` | `0oO#` | `1` | `1lI | ` |
| `2` | `2zZ?` | `3` | `3eE` | `4` | `4aA` | `5` | `5Ss` |
| `6` | `6Gb` | `7` | `7T` | `8` | `8B&` | `9` | `9g` |

### 安全性

Expand Down

0 comments on commit 71db859

Please sign in to comment.