Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
Помогли мы вам |
В качестве испытательного стенда прекрасно подойдет задание с образовательного ресурса PortSwigger Academy, требующее от нас выполнения сотен многошаговых повторяющихся действий.
Вот как сформулирована тестовая задача на сайте PortSwigger Academy:
Двухфакторная аутентификация в этой лаборатории уязвима перед брутфорсом. Ты уже получил имя пользователя и пароль, но не имеешь доступа к верификационному коду пользователя 2FA. Чтобы решить эту проблему, перебором найди код 2FA и получи доступ к странице аккаунта Карлоса.
Учетные данные жертвы:
carlos:
.montoya
Особенность этой задачи состоит в том, что здесь недостаточно просто перебрать код одноразового пароля (One Time Password — далее OTP) с существующей сессией, потому что после двух неправильных попыток приложение перестает считать сессию валидной. Для решения задания нам предстоит выполнять предаутентификацию при помощи учетных данных, а после этого попытаться предсказать OTP-код.
Нам дана страница аутентификации, которая выглядит следующим образом.
При вводе учетных данных приложение отправляет следующий запрос на сервер:
POST /login HTTP/1.1
Host: ace61ff51f4557d880dbab96004f009d.web-security-academy.net
Cookie: session=rcnBF1vzBD00ZSjcoswRzttRrEPIQNj2
Content-Type: application/x-www-form-urlencoded
Content-Length: 70
csrf=AxCZcrNQ1Y7x8xTI9odKun0alLM34a9a&username=carlos&password=montoya
Если мы введем учетные данные корректно, на экране появляется следующая страница ввода OTP-кода.
После ввода случайного OTP-кода приложение отправит следующий запрос:
POST /login2 HTTP/1.1
Host: ace61ff51f4557d880dbab96004f009d.web-security-academy.net
Cookie: session=2gt4P1gFqzyxZJIonAlFv9czYetD5pm0
Content-Type: application/x-www-form-urlencoded
Content-Length: 51
csrf=W9Nei8NhTXl5usVKeynuZ3kbjRHaVjW7&mfa-code=1234
Если мы сможем угадать OTP-код, мы решим задание. Шанс угадать, по сути, не так уж и мал: 1 к 10 000. С учетом того что количество попыток у нас не ограничено, пусть и требует дополнительных действий, результат гарантирован на 100%.
Что важно знать, прежде чем мы приступим к решению этой задачи?
Осталось автоматизировать процесс получения сессии, ввода первичных учетных данных, подхвата CSRF-токенов и попыток предсказания OTP-кода. Приступим!
|
|