Процентный доход
Задание 1Введение
Цель: Раскодировать percent-encoding, который часто прячет атаки в логах.
В журнале веб-сервера найден странный параметр запроса. Что в нём на самом деле?
Задание 2Теория и инструменты
В URL нельзя использовать любые символы, поэтому их кодируют как %XX, где XX — hex-код байта: пробел — %20, { — %7B.
Атакующие кодируют полезную нагрузку (например, ../ или <script>), чтобы обойти простые фильтры и спрятаться от глаз в логах.
Инструменты
- Python:
urllib.parse.unquote(s) - JS:
decodeURIComponent(s) - CyberChef: URL Decode
Больше теории — в разделе «Обучение: Веб».
Задание 3Практика: найдите флаг
GET /search?q=%43%54%46%7B%70%33%72%63%33%6E%74%5F%33%6E%63%30%64%31%6E%67%7D HTTP/1.1
Пошаговый план — открывайте по одному шагу
- 1Выделите значение параметра
q=(до пробела передHTTP/1.1). - 2Раскодируйте его — каждый
%XXпревратится в символ. - 3Получится флаг.
Подсказки — каждая до решения стоит −10 очков
Задание 4Как защититься
Фильтры и WAF должны проверять данные после полного декодирования, а лучше — использовать параметризованные API, а не фильтровать строки.
Разборы участников
Разборы открываются после того, как вы решите комнату, — чтобы не спойлерить ответ.