– Понятно?
– Понятно.
– Невероятно. Продолжай в том же духе. – Янек забрал у нее блокнот. – Слово
– Но как?
– Способов несколько. – Янек снова открыл ноут. – Может, начнем со списка пользователей, так проще всего…
Янек стучал по клавишам. В поле “логин” появился короткий текст: admin’ OR,1’=’1.
– Простой трюк, – сказал он. – База данных должна прочитать «OR» как любое другое слово, но из-за ошибки с апострофом, о которой я тебе говорил, он воспримет это как часть команды. То есть мы говорим компьютеру: назови пользователя по имени “admin” или – и это “или” самое важное – такого пользователя, для которого один равно одному. И вот тут-то бедная программа сходит с ума, потому что это всегда правда, один равен одному, это условие верно для любого пользователя. – Увидев, что Юлита уже открывает рот, чтобы что-то сказать, Янек остановил ее жестом. – Умоляю, не проси меня объяснять все в деталях, иначе мы просидим тут до утра, окей? Просто смотри.
Янек нажал
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”. Юлита таращилась в экран с таким недоверием, словно увидела волшебный фокус: выскочившего из цилиндра кролика или перерезанную пилой женщину, которая с улыбкой машет зрителям несмотря на хлещущую из ящика кровь. Янек открыл бутылку колы, отпил, вытер пересохшие губы. Подушечки пальцев у него почернели от фломастера.
– Ты не думай, – он явно был доволен собой, – редко когда бывает так легко. Здесь просто кто-то реально схалтурил. Как я понимаю, эту базу данных им написал лет десять назад какой-нибудь студент, которого взяли на бесплатную практику, и с тех пор никто в нее не заглядывал. Раз работает, чего ее трогать… Ладно, продолжаем?
– Продолжаем.
Он узнал много. Может, даже слишком много.
“Надо связаться с австралийцами, – подумал он. – Сегодня, самое позднее завтра”.
Бобжицкий нажал педаль сцепления, повернул ключ в замке зажигания.
А потом выбежал из машины, и его стошнило в придорожные кусты. Трава гнулась к земле под порывами ветра от проезжающих мимо машин, в траве валялись ржавые банки из-под пива и рваные пакеты. Нитки густой обжигающей рот слюны тянулись, словно паутинки бабьим летом.
Бобжицкий вытер лицо платком и сел в машину. Вдали высились силуэты варшавских небоскребов.