Страница:
278 из 415
Когда перед ним появилась входная форма с запросом имени пользователя и пароля, он запустил атаку SQL injection, как и планировал. В нормальном режиме, после того как пользователь введет свои имя и пароль — скажем, «davids» и «zl8M296q» — приложение использует эти входные данные для того, чтобы сгенерировать такую SQL-команду:
select record from users where user = 'davids' and password = 'z18M296q'
Если поле пользователя и поле пароля будут соответствовать информации в базе данных, тогда пользователя пускают в систему. Таким образом, все должно работать в нормальном режиме. А вот как проходила атака Роберта SQL-injection: в разделе для имени пользователя он написал — " or where password like "%
Для пароля он ввел аналогичную строку
" or where password like "%
Приложение использует эти входы и генерирует такую SQL-ко-манду:
select record from users where user = " or where password like '%' and password = "or where password like '%'
Элемент строки or where password like % говорит SQL принять запись, если пароль что угодно ( " % " — это пустышка). Обнаружив, что пароль удовлетворяет этому дикому условию, приложение впускает Роберта, как вполне законного пользователя, как если бы он ввел данные о законной авторизации. Система впускает его и связывает с данными первого пользователя в базе данных, которым обычно бывает администратор. Так и оказалось в нашем конкретном случае. Роберт не только вошел в систему, но и получил привилегии администратора.
Отсюда он получил возможность увидеть переписку всех сотрудников или авторизованных пользователей после успешного входа в систему.
|< Пред. 276 277 278 279 280 След. >|