Найти тему

CTF web — silmarill store

Оглавление

Разбираем седьмую задачку из нашего соревнования CTF. Задание называется silmarill store, 478 баллов за флаг.

-2

В задании предлагается посмотреть на некий простенький интернет-магазин.

Ссылки

CTF - Capture The Flag

Решение

В задачке встретятся различные логические уязвимости, связанные с недостаточной валидацией входных данных.

Рассматриваем магазинчик. 

-3

У нас есть пользователь, у него 100 рублей на счету. И есть два товара, мусор, который стоит 1 рубль и Silmaril, который стоит много, у нас столько нет. Подозреваю, что в задаче нужно попытаться купить драгоценность. 

Пробуем купить мусор.

-4

Замечаем, что баланс уменьшился на 1 рубль.

-5

Пробуем купить драгоценность.

-6

Неудачка. 

Попробуем обычный вариант - подменить идентификаторы товаров. Заменим у мусора идентификатор товара на идентификатор драгоценности. Этот способ используют мошенники и в обычных магазинах - переклеивают этикетки и дорогой товар покупают по цене недорогого.

Посмотрим идентификатор драгоценности:

-7

Название идентификатора "id", значение "0". Смотрим идентификатор мусора:

-8

У мусора id=1. Заменяем его на "0":

-9

Покупаем мусор.

-10

А вот и флаг!

evoctf{lembas_elvish_waybread}

P.S.

У задачки есть ещё несколько решений.

  • Вместо подмены id можно заменить стоимость у драгоценности, тоже прокатывает.
  • Можно купить мусор за отрицательное количество рублей, тогда сумма на счету не уменьшится, а увеличится. Это ещё один из распространённых типов уязвимости - не учитывать отрицательные значения.

Безопасность

В интернет-магазинах идёт работа с деньгами, нужно проверять всё досконально, особенно если у вас всё автоматизировано.

  1. Проверяйте стоимость товара.
  2. Проверяйте идентификаторы товаров.
  3. Проверяйте отрицательные величины.

Источник:
https://internet-lab.ru/ctf_web_silmarill_store

Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.