Выбор за тобой - Якуб Шамалек
Шрифт:
Интервал:
Закладка:
То, что делал Янек, ни в чем не напоминало те фильмы. В поле “логин” он вписал только один символ: апостроф, а потом нажал enter. Чуть позже появилось сообщение. Server Error.
– Отлично, – Янек потер руки. – Быстро управимся.
– Я не понимаю… – Юлита напряженно вглядывалась в экран, словно смотрела на один из таких рисунков, которые скрывают в себе другой рисунок, заметный, только если напрячь зрение. Но другой рисунок не появлялся.
– Это значит, что база данных сконфигурирована неверно. Она плохо фильтрует признаки утечки. Иначе мне бы пришло сообщение, что нет такого пользователя.
– Э-э-э…
– Ну, благодаря этому я могу изменить исполняемый запрос, – сказал Янек и вписал в поле “логин” следующую команду. – Ладно, сейчас не мешай, мне нужно пять минут и…
– Стоять, стоять, стоять. – Юлита сложила экран ноутбука, игнорируя протесты Трана. – Мы не так договаривались. Ты должен был мне все объяснить.
– Ну вот я и объясняю.
– Так, чтобы я не чувствовала себя дурой.
Янек погладил усы, вздохнул.
– Юлита, ты понимаешь, чего ты от меня требуешь? – раздраженно уточнил он. – Представь, что ты приходишь на лекцию на четвертом курсе мехмата и надеешься, что тебе объяснят, как решать их задачи. Барышня, вы же ничего не знаете.
Вроде все верно, но ее задело за живое. И еще это “барышня” свысока. “Хрен тебе, парниша, – подумала она, – я от тебя не отстану”.
– Подумай об этом так, – сладко проворковала Юлита. – Какая прекрасная возможность для подающего надежды педагога.
– Но я не… Э-эх. – Янек умолк и открыл бардачок. Он рылся в нем, пытаясь что-то отыскать среди мятых бумажных платочков и конфетных фантиков. Наконец извлек пожелтевший мятый блокнот и черный фломастер.
– Будь так добра, сосредоточься, хорошо? Представим, что доступ к этой базе данных есть у некоего Яна Малиновского. Когда ты вписываешь в поле “логин” “Малиновский” и нажимаешь enter, на самом деле ты отправляешь вот такой запрос.
Фломастер заскрипел по бумаге, у Янека оказался ужасный, корявый почерк. Он дописал и передал блокнот Юлите. SELECT * FROM users WHERE username =,malinowski’.
– То есть ты велишь компьютеру, чтобы из категории “пользователи” он выбрал пользователя по фамилии “Малиновский”.
– Понятно?
– Понятно.
– Невероятно. Продолжай в том же духе. – Янек забрал у нее блокнот. – Слово ,malinowski’ с двух сторон окружают апострофы, так? Апострофы – часть команды, они выделяют ее часть. А теперь смотри: если в поле “логин” я вписываю только апостроф, то сервер воспринимает это как запрос пользователя по фамилии, ну, апостроф. – Быстрый взмах фломастером, короткая черточка. – Но если сервер сконфигурирован плохо, он прочтет это как часть команды, поэтому он мне сообщает, что он не понимает команду, как было пару минут назад. Иначе говоря, кто-то хреново сделал свою работу, потому что я могу вписывать команды администратора, будучи просто пользователем. А это означает, что мы войдем за пару минут.
– Но как?
– Способов несколько. – Янек снова открыл ноут. – Может, начнем со списка пользователей, так проще всего…
Янек стучал по клавишам. В поле “логин” появился короткий текст: admin’ OR,1’=’1.
– Простой трюк, – сказал он. – База данных должна прочитать «OR» как любое другое слово, но из-за ошибки с апострофом, о которой я тебе говорил, он воспримет это как часть команды. То есть мы говорим компьютеру: назови пользователя по имени “admin” или – и это “или” самое важное – такого пользователя, для которого один равно одному. И вот тут-то бедная программа сходит с ума, потому что это всегда правда, один равен одному, это условие верно для любого пользователя. – Увидев, что Юлита уже открывает рот, чтобы что-то сказать, Янек остановил ее жестом. – Умоляю, не проси меня объяснять все в деталях, иначе мы просидим тут до утра, окей? Просто смотри.
Янек нажал enter. Через мгновение на экране появился список пользователей.
JLipski
KPorebski
ZMikolski
AFalecka
HKupiec
WChrusciel
JSwierzynska
PBaranski
MZych
MNicgorska
ARabiega
MTomaszkiewicz
BBlacha
AMotyka
DMichalski
– Отлично. – Янек стукнул пальцем по экрану ноутбука. Только теперь Юлита заметила, что экран очень грязный: весь в жирных пятнах и в пыли. – Кого выберем?
– Это имеет какое-то значение?
– Никакого.
– Хм… – Юлита наклонилась, – тогда пусть будет Хрущель. У моей учительницы польского в начальной школе была такая фамилия. Ничего так тетка, только…
– Пусть будет Хрущель, – Янек не дал ей закончить. – Мы знаем, что у нас есть пользователь по фамилии ВХрущель, да? Владимир, Ванда, Вацлав, неважно. Вопрос в том, какой у него пароль. Есть несколько способов это выяснить… Например, мы можем использовать такую команду. Смотри.
Янек поскрипел фломастером по бумаге и передал Юлите блокнот. ‘OR EXISTS(SELECT * FROM users WHERE username=’WChrusciel’ AND password LIKE ‘%a%’) AND ‘’=’.
– Оке-е-ей… – Юлита почесала шею. Кожа была липкая. Вот бы принять долгий, горячий душ… – Выбери из пользователей пользователя по фамилии ВХрущель и пароль… Дальше я уже не знаю.
– В принципе мы спрашиваем, есть ли в пароле буква “а”.
– И как, есть?
– Не знаю, – Янек пожал плечами. – Если есть, то мы войдем. Если нет, то появится сообщение, что пароль или имя пользователя неверны, тогда попробуем еще раз. Готова?
– Ага.
С первого раза не получилось. Янек попробовал ту же команду с другой буквой, на сей раз “е”. Снова не то. Еще одна попытка – с “и”. “Приветствую, WChrusciel”. Юлита таращилась в экран с таким недоверием, словно увидела волшебный фокус: выскочившего из цилиндра кролика или перерезанную пилой женщину, которая с улыбкой машет зрителям несмотря на хлещущую из ящика кровь. Янек открыл бутылку колы, отпил, вытер пересохшие губы. Подушечки пальцев у него почернели от фломастера.
– Ты не думай, – он явно был доволен собой, – редко когда бывает так легко. Здесь просто кто-то реально схалтурил. Как я понимаю, эту базу данных им написал лет десять назад какой-нибудь студент, которого взяли на бесплатную практику, и с тех пор никто в нее не заглядывал. Раз работает, чего ее трогать… Ладно, продолжаем?
– Продолжаем.
Би-и-и-и-и-ип. Звук клаксона вывел Бобжицкого из задумчивости. Фура за ним мигала фарами. Прокурор взглянул на спидометр: стрелка едва переваливала за отметку в пятьдесят километров в час. Бобжицкий съехал на обочину, пропустил грузовик и выстроившуюся за ним вереницу автомобилей. Сердце