Xakep #305. Многошаговые SQL-инъекции
Россиянин Петр Митричев вчера был объявлен победителем первого ежегодного
"Хакерского кубка Facebook" (Facebook Hacker Cup). Митричев получил 5000
долларов, сам кубок, а также признание коллег по программистскому цеху и
поздравления из рук основателя главы Facebook Марка Цукерберга.
Сам кубок, как говорит Цукерберг, символизирует хакерство с положительной
стороны этого понятия. По словам главы Facebook, хакер - это, прежде всего,
человек, способный решить какую-либо задачу нестандартным способом, причем
сделав это быстрее других. Что касается "хакерского кубка", то здесь Facebook
пошла по пути других мировых ИТ-компаний, организующих различные соревнования и
чемпионаты для участников со всего мира.
Так, Intel организует и поддерживает геймерские соревнования, а вот Google со
своим соревнованием Google Code Jam поощряет программистов. Есть и другие
соревнования, например американские TopCoder, и прочие. В Facebook попытались
дистанцироваться от этих соревнований и провели у себя в офисе финальные игры,
где 25 финалистов, в том числе семь человек из Польши, шестеро из России, четыре
из США, два из Японии и по одному из Китая, Тайваня, Германии, Нидерландов,
Сингапура, Швейцарии и Украины, попытались решить три логических задачи, которые
нужно было решить с применением компьютера.
Перед финальным соревнованием Facebook провела несколько отборочных туров,
первый из которых был еще в январе этого года.
Для решения финальных задач участникам требовались не столько программистские
навыки, сколько хорошая логика мышления и знание основ высшей математики, теории
вероятности и математической статистики. Facebook разрешила участникам применять
при решении задач любую операционную систему (де-факто Windows или Linux), а
также любой из языков программирования (большинство выбрали Java или C++). По
умолчанию все участники получили Windows-компьютеры с набором софта Cygwin,
эмулирующим среду Linux.
Изначально Facebook дала участникам соревнования два часа на решение трех
проблем. По прошествии отведенного условиями времени из 25 человек лишь трое
решили все три задачи. Причем один привел алгоритм с небольшой ошибкой, а двое -
Петр Митричев и Тьенченг Лу - сделали это без ошибок, но россиянин формально
затратил на решение меньше времени, а потому был признан победителем.
Лу применял для реализации решения Visual Basic, тогда как Митричев - Java.
По словам Митричева, Java он выбрал потому, что на данном языке при написании
кода сложнее ошибиться, кроме того размер кода тут можно сократить до минимума.
Еще четверо участников решили две задач и десять решили одну.
Ознакомиться с текстом задач (и может быть попробовать их решить) можно
здесь, увидеть решения победителя можно на
странице Facebook (требуется регистрация в сети).