пятница, 23 ноября 2012 г.

Тест по предмету cybersecurity или как я обманул систему

В минувший понедельник писали тест по курсу Cybersecurity, преподаватель Germinal Isern. На дворе 21 век, посему писали так - преподаватель выкладывает файл с тестом на сервер, мы его переписываем себе, решаем и по нажатию на кнопочку результат отправляется ему на e-mail и показывается нам. Файл с тестом представляет из себя простую html-страничку, и у меня сразу возникли мысли о том, что ответы лежат внутри.
Сразу вспомнилось, как писали тесты в родном Педуниверситете - была специальная оболочка, ограничение по времени, ответы автоматически отсылались на сервер - не подкопаешься (правда, ответы мы все равно доставали, но другим путем :)). А тут - простая html-страничка (cybersecurity, помните?). Возникло желание разобраться, что к чему.
Тест я написал хорошо, 92% правильных ответов (не без помощи Гугла, конечно). Придя домой, начал копаться и обнаружил довольно хитрый javascript-код (местами явно чувствуется влияние программистов-индусов - настолько все запутано). Сразу же наткнулся на массив с правильными ответами, понятно, зашифрованными. Стало еще интереснее.
Учитывая то, что javascript я не знаю абсолютно - дело заняло у меня часа полтора (разбирался с синтаксисом). Но в итоге была выведена хитрая формула, которая считает ответ, используя шестнадцатеричное число из массива, номер вопроса и операции mod и xor. В итоге получается десятичное число, которое представляет собой код символа из таблицы ASCII с нужной буквой ответа.
Так как правильные ответы у меня были, провел пробные вычисления - все оказалось правильно. Так что следующий тест можно написать на 100% буквально за 10 минут.
Понятно, что тесты делаются для проверки знаний и жульничать нехорошо - но дело не в этом, дело в том, что найдена уязвимость. Любой мало-мальски знакомый с программированием человек сразу увидит, что к чему.
На следующем тесте собираюсь спросить у преподавателя, имеет ли он отношение к написанию кода (а то мало ли, вдруг тест не он составлял). Посмотрим, что из этого получится :)

4 комментария:

  1. Ну вот ИТ-шники и начали изучать JS :)
    2 зайца одним выстрелом :)

    ОтветитьУдалить
  2. Паша, молодец)))

    ОтветитьУдалить
  3. Он сегодня, видимо, про тебя рассказывал на лекции))

    ОтветитьУдалить
  4. Вполне возможно) Передавайте привет от меня, если что

    ОтветитьУдалить