54103a32442d290d6781fc4f24b021d6e885dd63
ctf/IERAE CTF 2024 writeup.md
... | ... | @@ -33,6 +33,7 @@ curl "192.0.2.1:3000/search?user=http%3A%2F%2F192.0.2.2%3000" |
33 | 33 | |
34 | 34 | - `io_lib.py` |
35 | 35 | |
36 | + <details> |
|
36 | 37 | ```python |
37 | 38 | import subprocess |
38 | 39 | import string |
... | ... | @@ -64,9 +65,11 @@ curl "192.0.2.1:3000/search?user=http%3A%2F%2F192.0.2.2%3000" |
64 | 65 | |
65 | 66 | return generator_output_list |
66 | 67 | ``` |
67 | - |
|
68 | + </details> |
|
69 | + |
|
68 | 70 | - `lib.py` |
69 | 71 | |
72 | + <details> |
|
70 | 73 | ```python |
71 | 74 | # https://zenn.dev/hk_ilohas/articles/mersenne-twister-previous-state より引用 |
72 | 75 | |
... | ... | @@ -115,9 +118,10 @@ curl "192.0.2.1:3000/search?user=http%3A%2F%2F192.0.2.2%3000" |
115 | 118 | state[i] = result |
116 | 119 | return state |
117 | 120 | ``` |
118 | - |
|
121 | + </details> |
|
119 | 122 | - `predict_secret.py` |
120 | 123 | |
124 | + <details> |
|
121 | 125 | ```python |
122 | 126 | from lib import untemper, get_prev_state |
123 | 127 | import random |
... | ... | @@ -133,9 +137,11 @@ curl "192.0.2.1:3000/search?user=http%3A%2F%2F192.0.2.2%3000" |
133 | 137 | predicted = [random.getrandbits(32) for _ in range(n)] |
134 | 138 | return predicted[623] |
135 | 139 | ``` |
136 | - |
|
140 | + </details> |
|
141 | + |
|
137 | 142 | - `solver.py` |
138 | 143 | |
144 | + <details> |
|
139 | 145 | ```python |
140 | 146 | import subprocess |
141 | 147 | from io_lib import read_output |
... | ... | @@ -194,7 +200,7 @@ curl "192.0.2.1:3000/search?user=http%3A%2F%2F192.0.2.2%3000" |
194 | 200 | expected_prompts=2, |
195 | 201 | ) |
196 | 202 | ``` |
197 | - |
|
203 | + </details> |
|
198 | 204 | |
199 | 205 | ## babewaf |
200 | 206 | 解けなかったけどいくつか勉強になったことがあるのでメモ。 |
... | ... | @@ -222,6 +228,7 @@ curl "192.0.2.1:3000/search?user=http%3A%2F%2F192.0.2.2%3000" |
222 | 228 | |
223 | 229 | とすると、`candidate_char_set`の中から、`appeared_char_set_dict[i]`を削除するとi文字目の文字だけが残る。 |
224 | 230 | |
231 | +<details> |
|
225 | 232 | 競技サーバを`192.0.2.1:55555`, とする。 |
226 | 233 | |
227 | 234 | ```python |
... | ... | @@ -360,3 +367,4 @@ def main(): |
360 | 367 | if __name__ == "__main__": |
361 | 368 | main() |
362 | 369 | ``` |
370 | +</details> |
|
... | ... | \ No newline at end of file |