Opis
W tym zadaniu mieliście do czynienia z internetowym kursem, w którym sztucznie wprowadzony czasowy delay uniemożliwiał dotarcie do ostatniej lekcji w trakcie trwania wydarzenia. Sama strona była przy tym wyjątkowo podatna na ataki. Poniżej przedstawiamy dwa przykładowe sposoby, które umożliwiały zdobycie flagi.
Rozwiazanie
- Modyfikacja localStorage Strona przechowywała numer aktualnej lekcji w localStorage. Choć liczba wszystkich lekcji nie była znana, można było ręcznie modyfikować tę wartość i metodą prób i błędów sprawdzić, która lekcja zawiera flagę. W ten sposób możliwe było pominięcie całego kursu i bezpośrednie przejście do końcowego ekranu.
- Ominięcie ograniczenia przycisku „Next Lesson” Przycisk Next Lesson był zablokowany jedynie poprzez atrybut disabled="true". Usunięcie tego atrybutu w narzędziach deweloperskich przeglądarki umożliwiało przechodzenie między lekcjami bez faktycznego ich ukończenia. Dla wygody i automatyzacji można było skorzystać z wtyczki typu Tampermonkey i napisać prosty skrypt, który samodzielnie klikałby przycisk i przeskakiwał przez kolejne lekcje aż do flagi.