21
21
22
22
\maketitle
23
23
24
+ \tableofcontents
25
+ \newpage
26
+
24
27
\section {\SectionTitleProjectVision }
25
28
\label {sec:cel-wizja }
26
29
30
+ \subsection {Wprowadzenie }
31
+
27
32
Gra typu Capture-the-Flag jest to rodzaj zawodów z ogólnie pojętego
28
33
bezpieczeństwa komputerowego. Ich celem zwykle jest edukacja uczestników
29
34
o zabezpieczeniach systemów oraz możliwość pokazania im jak reagować
@@ -35,7 +40,7 @@ \section{\SectionTitleProjectVision}
35
40
z dziedziny eksploitacji stron internetowych, flagę możemy znaleźć klikając
36
41
"Pokaż źródło strony" w przeglądarce internetowej.
37
42
38
- \begin {figure }[h ]
43
+ \begin {figure }[ht ]
39
44
\centering
40
45
\includegraphics [width=10cm]{flag_page_source}
41
46
\caption {Flaga \textbf {f7s0jkl } ukryta w źródle strony internetowej}
@@ -60,12 +65,12 @@ \section{\SectionTitleProjectVision}
60
65
Platforma sama w sobie nie jest niczym specjalnym, udostępnia jedynie takie powszechne
61
66
funkcjonalności jak rejestracja użytkowników, ranking najlepszych graczy,
62
67
pobieranie zadań oraz interfejs umożliwiający wprowadzanie znalezionych
63
- flag. Z tego względu użyję już gotowej platformy \href {https://ctfd.io} {CTFd}.
68
+ flag. Z tego względu użyję już gotowej platformy CTFd \cite {CTFd }.
64
69
Użycie takiego gotowego rozwiązania pozwoli mi w pełni skupić się na samych zadaniach
65
70
i nie przejmować się takimi rzeczami jak gracze próbujący łamać zabezpieczenia
66
71
platformy.
67
72
68
- \begin {figure }[h ]
73
+ \begin {figure }[ht ]
69
74
\centering
70
75
\includegraphics [width=10cm]{ctfd}
71
76
\caption {Przykładowe zadanie na stronie demonstracyjnej CTFd}
@@ -83,13 +88,15 @@ \section{\SectionTitleProjectVision}
83
88
zachęcające go do dalszej rozgrywki. Finalne zadania powinny stanowić wyzwanie
84
89
nawet dla doświadczonych graczy. \pagebreak
85
90
91
+ \subsection {Dostępne platformy }
92
+
86
93
Aktualnie istnieje wiele różnych zawodów CTF online.
87
- Jednym z popularniejszych jest \newline \href {https://picoctf.com} {picoCTF}.
88
- Można tam kiedykolwiek wejść, zalogować się i zająć się rozwiązywaniem problemów.
94
+ Jednym z popularniejszych jest \newline picoCTF \cite {picoCTF }.
95
+ Można tam wejść kiedykolwiek , zalogować się i zająć się rozwiązywaniem problemów.
89
96
90
- \begin {figure }[h ]
97
+ \begin {figure }[ht ]
91
98
\centering
92
- \includegraphics [width=10cm ]{picoctf}
99
+ \includegraphics [width=15cm ]{picoctf}
93
100
\caption {Zadanie z kategorii Forensics na stronie picoCTF}
94
101
\label {fig:picoctf }
95
102
\end {figure }
@@ -99,11 +106,13 @@ \section{\SectionTitleProjectVision}
99
106
Mnie natomiast bardzo interesuję temat inżynierii wstecznej i chciałem
100
107
przygotować wyzwania oparte o zadania tylko z tej kategorii.
101
108
109
+ \subsection {Języki programowania i narzędzia }
110
+
102
111
Zadania będą tworzone w języku C. Jest to powszechnie znany język, który
103
112
z wyłączoną zbyt agresywną optymalizacją ze strony kompilatora, generuje
104
113
w miarę przewidywalny kod maszynowy. Zaletą tego jest to, że narzędzia
105
114
do debugowania, dezasemblacji oraz wykonywania innych analiz programów
106
- bardzo dobrze radzą sobie z takimi plikami. Dzięki temu język ten
115
+ dobrze radzą sobie z takimi plikami. Dzięki temu język ten
107
116
zapewni nam kontrolę nad tym w jakim stopniu graczowi ułatwimy
108
117
lub utrudnimy rozgrywkę. W celu zapewnienia większej różnorodności
109
118
środowisk korzystać będziemy zarówno z systemu Windows jak i Linux.
@@ -112,46 +121,173 @@ \section{\SectionTitleProjectVision}
112
121
Poczynając od linuxowych programów linii poleceń takich jak \emph {strings }
113
122
czy \emph {gdb }, pisania własnych narzędzi w języku \emph {Python },
114
123
czy w końcu korzystając z pełnoprawnych narzędzi z interfejsem graficznym takich
115
- jak używana przez NSA \emph {Ghidra }, czy debugger dla systemu
124
+ jak używana przez NSA \emph {Ghidra }, \emph { Cutter }, czy debugger dla systemu
116
125
Windows \emph {RemedyBG }.
117
126
118
127
\clearpage
119
128
120
- % \emph{Charakterystyka problemu, motywacja projektu (w tym przegląd
121
- % istniejących rozwiązań prowadząca do uzasadnienia celu prac),
122
- % wizja produktu i analiza zagrożeń.}
123
-
124
129
\section {\SectionTitleScope }
125
130
\label {sec:zakres-funkcjonalnosci }
126
- % \emph{Kontekst użytkowania produktu (aktorzy, współpracujące systemy)
127
- % oraz specyfikacja wymagań funkcjonalnych i niefunkcjonalnych.}
131
+
132
+ \subsection {Platforma }
133
+
134
+ Jak wspominałem w poprzednim rozdziale, do interfejsu webowego skorzystam
135
+ z gotowej platformy CTFd \cite {CTFd }. Finalny produkt będzie
136
+ dostępny na mojej stronie, pod adresem \href {https://szczygiel.dev}{https://szczygiel.dev}.
137
+ Strona postawiona będzie na prywatnym serwerze VPS. Platforma będzie
138
+ uruchomiona w środowisku docker \cite {docker },
139
+ a wystawiona do świata będzie poprzez serwer Caddy \cite {Caddy },
140
+ który w prosty sposób zapewni nam HTTPS, dzięki organizacji Let's Encrypt \cite {lets_encrypt }.
141
+
142
+ \subsection {Użytkownicy }
143
+
144
+ Użytkownikiem systemu będzie każda osoba zainteresowana rozwiązywaniem
145
+ tego rodzaju zadań. Może to być zarówno ktoś kształcący się lub pracujący
146
+ w dziale informatycznym, jak i osoba dla której jest to jedynie hobby.
147
+
148
+ Wszystkie gotowe zadania zostaną wrzucone na platformę, dzięki czemu
149
+ każda zainteresowana osoba będzie mogła spróbować swoich sił.
150
+
151
+ \clearpage
152
+
153
+ \subsection {Prezentacja interfejsu użytkownika }
154
+
155
+ \begin {figure }[ht]
156
+ Pierwsze co zobaczy każdy użytkownik wchodzący na platformę, to strona główna.
157
+ Będzie z niej można przejść do reszty podstron, takich jak logowanie, rejestracja,
158
+ wylogowanie, spis graczy, tabela wyników oraz lista dostępnych zadań.
159
+
160
+ \vspace {1cm}
161
+
162
+ \centering
163
+ \includegraphics [width=14cm]{szczygiel_dev}
164
+ \caption {Strona głowna platformy CTF}
165
+ \label {fig:szczygiel_dev }
166
+ \end {figure }
167
+
168
+ \begin {figure }[ht]
169
+ Poniżej przedstawiony jest interfejs rejestracji nowego użytkownika.
170
+ Nie będzie to nic skomplikowanego - wystarczy podać login, email oraz hasło.
171
+
172
+ \vspace {1cm}
173
+
174
+ \centering
175
+ \includegraphics [width=14cm]{szczygiel_dev_register}
176
+ \caption {Rejestracja nowego użytkownika}
177
+ \label {fig:szczygiel_dev_register }
178
+ \end {figure }
179
+
180
+ \begin {figure }[ht]
181
+ Jeśli użytkownik posiada konto to będzie się mógł na nie zalogować.
182
+
183
+ \vspace {1cm}
184
+
185
+ \centering
186
+ \includegraphics [width=14cm]{szczygiel_dev_login}
187
+ \caption {Panel logowania dla istniejącego użytkownika}
188
+ \label {fig:szczygiel_dev_login }
189
+ \end {figure }
190
+
191
+ \begin {figure }[ht]
192
+ Będąc zalogowanym, można wybrać zadanie które ma się ochote rozwiązać.
193
+
194
+ \vspace {1cm}
195
+
196
+ \centering
197
+ \includegraphics [width=14cm]{szczygiel_dev_challenges}
198
+ \caption {Wybór zadania do rozwiązania}
199
+ \label {fig:szczygiel_dev_challenges }
200
+ \end {figure }
201
+
202
+ \begin {figure }[ht]
203
+ Po wybraniu interesującego nas zadania, może pobrać dostarczony plik,
204
+ a następnie po rozwiązaniu zadania wprowadzić prawidłową (lub nie) flagę.
205
+
206
+ \vspace {1cm}
207
+
208
+ \centering
209
+ \includegraphics [width=14cm]{szczygiel_dev_incorrect}
210
+ \caption {Interfejs zadania oraz wprowadzenie nieprawidłowej flagi}
211
+ \label {fig:szczygiel_dev_incorrect }
212
+ \end {figure }
213
+
214
+ \begin {figure }[ht]
215
+ Po wprowadzeniu prawidłowej flagi otrzymamy stosowny komunikat.
216
+ Można również zauważyć, że zadanie w tle zmieniło kolor na zielony.
217
+
218
+ \vspace {1cm}
219
+
220
+ \centering
221
+ \includegraphics [width=14cm]{szczygiel_dev_correct}
222
+ \caption {Efekt wprowadzenia prawidłowej flagi}
223
+ \label {fig:szczygiel_dev_correct }
224
+ \end {figure }
225
+
226
+ \begin {figure }[ht]
227
+ Dostępna jest również lista zarejestrowanych użytkowników.
228
+ Można wejść w profil każdego użytkownika i zobaczyć jego postępy.
229
+
230
+ \vspace {1cm}
231
+
232
+ \centering
233
+ \includegraphics [width=14cm]{szczygiel_dev_users}
234
+ \caption {Spis zarejestrowanych użytkowników}
235
+ \label {fig:szczygiel_dev_users }
236
+ \end {figure }
237
+
238
+ \begin {figure }[ht]
239
+ Wchodząc na profil użytkownika możemy zobaczyć o nim różne informacje.
240
+ Jest to przede wszystkim rozkład prawidłowych oraz nie prawidłowych
241
+ wprowadzeń flag oraz wykres posiadanych punktów w czasie.
242
+ Na dole widzimy również wszystkie rozwiązane przez użytkownika zadania.
243
+
244
+ \vspace {1cm}
245
+
246
+ \centering
247
+ \includegraphics [width=14cm]{szczygiel_dev_user_info}
248
+ \caption {Szczegóły postępów konkretnego użytkownika}
249
+ \label {fig:szczygiel_dev_user_info }
250
+ \end {figure }
251
+
252
+ \begin {figure }[ht]
253
+ Każdy użytkownik może również zmienić oraz dodać informację o sobie.
254
+ Będzie mógł zmienić nazwę użytkownika, email, hasło, oraz dodać
255
+ takie szczegóły jak strona internetowa, firma dla której pracuję czy kraj pochodzenia.
256
+
257
+ \vspace {1cm}
258
+
259
+ \centering
260
+ \includegraphics [width=14cm]{szczygiel_dev_settings}
261
+ \caption {Edycja profilu użytkownika}
262
+ \label {fig:szczygiel_dev_settings }
263
+ \end {figure }
264
+
265
+ \clearpage
128
266
129
267
\section {\SectionTitleRealizationAspects }
130
268
\label {sec:wybrane-aspekty-realizacji }
131
- % \emph{Przyjęte założenia, struktura i zasada działania systemu,
132
- % wykorzystane rozwiązania technologiczne wraz z uzasadnieniem
133
- % ich wyboru, istotne mechanizmy i zastosowane algorytmy.}
269
+ \emph {Przyjęte założenia, struktura i zasada działania systemu,
270
+ wykorzystane rozwiązania technologiczne wraz z uzasadnieniem
271
+ ich wyboru, istotne mechanizmy i zastosowane algorytmy. }
134
272
135
273
\section {\SectionTitleWorkOrganization }
136
274
\label {sec:organizacja-pracy }
137
- % \emph{Struktura zespołu (role poszczególnych osób), krótki opis i
138
- % uzasadnienie przyjętej metodyki i/lub kolejności prac, planowane i
139
- % zrealizowane etapy prac ze wskazaniem udziału poszczególnych
140
- % członków zespołu, wykorzystane praktyki i narzędzia w zarządzaniu
141
- % projektem.}
275
+ \emph {Struktura zespołu (role poszczególnych osób), krótki opis i
276
+ uzasadnienie przyjętej metodyki i/lub kolejności prac, planowane i
277
+ zrealizowane etapy prac ze wskazaniem udziału poszczególnych
278
+ członków zespołu, wykorzystane praktyki i narzędzia w zarządzaniu
279
+ projektem. }
142
280
143
281
\section {\SectionTitleResults }
144
282
\label {sec:wyniki-projektu }
145
- % \emph{Wskazanie wyników projektu (co konkretnie udało się uzyskać:
146
- % oprogramowanie, dokumentacja, raporty z testów/wdrożenia, itd.), prezentacja wyników
147
- % i ocena ich użyteczności (jak zostało to zweryfikowane --- np.\ wnioski
148
- % klienta/użytkownika, zrealizowane testy wydajnościowe, itd.),
149
- % istniejące ograniczenia i propozycje dalszych prac.}
150
-
151
- % o ile to możliwe proszę używać odwołań \cite w konkretnych miejscach a nie \nocite
283
+ \emph {Wskazanie wyników projektu (co konkretnie udało się uzyskać:
284
+ oprogramowanie, dokumentacja, raporty z testów/wdrożenia, itd.), prezentacja wyników
285
+ i ocena ich użyteczności (jak zostało to zweryfikowane --- np.\ wnioski
286
+ klienta/użytkownika, zrealizowane testy wydajnościowe, itd.),
287
+ istniejące ograniczenia i propozycje dalszych prac. }
152
288
153
- % \nocite{artykul2011,ksiazka2011,narzedzie2011,projekt2011}
289
+ \clearpage
154
290
155
- % \bibliography{bibliography}
291
+ \bibliography {bibliography}
156
292
157
293
\end {document }
0 commit comments