![]() |
Вопрос по sql-inj в SYBASE
Мож, кто знает, подскажите пожалуйста...
Есть сервер SYBASE ASE 15.0.1 Есть sql-inj на сайте, есть вывод полей типа VARCHAR и INT, есть соответственно таблица master..syslogins, в ней есть поле password тип VARBINARY, так вот собственно вопрос, как прочитать значение этой колонки, мож есть функция какая нибудь для конвертации, впринципе т.к синтаксис sybase похож на mssql, мож кто подскажет такой вариант в mssql. Зы И еще вопрос, есть ли в ase 15.0.1 какойнибудь аналог Information_schema, т.е. мож кто знает как прочитать таблицы и колонки в БД |
Юзай поиск я поднимал этот вопрос, имеет синтаксис TSQL, как и mssql.
|
Конвертировать пароль можно так
Код:
select convert(varchar,password)Код:
select table_name from SYSTABLESтакже есть системные таблицы SYSMESSAGES - Список всех сообщений об ошибках сервера SYSKEYS - Информация о ключах и внешних ключах SYSVIEWS - Тексты всех представлений SYSCOLUMNS - Информация о столбцах таблиц SYSINDEXES - Информация об индексах SYSOBJECTS - Информация о таблицах, триггерах, представлениях и т. п. SYSDATABASES - Информация обо всех базах данных на сервере SYSPROCEDURES - Информация о представлениях, триггерах и сохраненных процедурах |
[ cash ] нашел твою статью "Работа С СУБД Через Иньекцию Запроса", больше ничего не нашел, она полезна конечно, но для совсем уж начинающих
поверь, я бы не задавал вопросы, если б все было так просто расскажу поподробнее: вопервых абсолютно нет вывода ошибок, точка с запятой не фильтруется d _REQUEST (проверял /*;*/) но сама скуля принимать ; не хочет, start at выдает ошибку (top работает) но это ерунда, в _REQUEST фильтруются кавычки, но это тоже ерунда, также фильтрация < и > (они мне не особо пока нужны были, так что тоже ерунда) convert(varchar,password) - не работает (хотя convert (varchar,1) - все нормально) тоже самое c cast(password as varchar) гдето прочитал что структуру БД можно получить пользуя information_schema (соответственно это не так в моем случае) да, и еще на серве стоит linux [ cash ], я так понимаю у тебя есть опыт работы с ase, у меня его нет, думаю не так уж сложно поделится опытом, темболее я понятливый |
Поле password, как я понял ,запрещено к прочтению, поэтому оно и не выводилось (извиняюсь сразу), SYSTABLES, в стандарте ase 15/0/1 нет, есть syscolumns, [ cash ], скажи, плз, в какую сторону копать для получения таблиц и полей соответственнно, если знаешь конечно
|
Копать в сторону юзай поиск, вообще скуль провести можно в очень редких случаях.
|
Scipio, ты хоть ссылку покажи... А то ни сообщения об ошибке, никакой другой информации... Инъекция в Sybase очень уж похожа на мелкософтовосерверную... Информация об именах таблиц хранится в системном каталоге:
Цитата:
Цитата:
Теперь что касается перебора... Разве в этом плане что-то изменилось? Всё делается через вывод ошибки (если он включён вообще). Вот пример: Цитата:
Что ещё можно сказать? Выполнение команд через xp_cmdshell 'ipconfig /all'. Ну и в дополнение скажу, что эксплуатация инъекций в сибейсе весьма затруднительна... Причина этому - разница в грантах на права и объекты по сравнению с другими СУБД и своеобразный синтаксис языка SQL. |
Вобщем проблема решена, всем спасибо
2 groundhog & ant0ha, хоть убейте, но в ASE я не нашел таблицы ни SYSTABLE, ни SYSTABLES, их описания (даже упоминания о какой то из них) я не нашел и в офицальном мануале, если не верите можете проверить, вот ссылка на ман: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.tables/html/tables/tables2.htm Если кому интересно вот способ, как я вытащил имена таблиц и колонок (кстати в гугле так и не нашел, как это делать): таблицы - это объекты, информация о всех объектах БД хранится в системной таблице sysobjects, оттуда их и надо доставать, объект "пользовательские таблицы" в sysobjects имеют объектный тип "U", отсюда можно сделать запрос: Код:
Select name,id from dbname..sysobjects where type=0x55Код:
Select name,id from dbname..sysobjects where type=0x55 and id not in (<полученный id>)после того, как мы получили id и имена всех таблиц в БД можно вытащить имена колонок из системной таблицы syscolumns: Код:
Select name,colid from dbname..syscolumns where id=<id таблицы>Да, забыл сказать, для того что бы перебирать значения можно использовать top start at, но в моем случае это было невозможно (незнаю почему) а переписывать примеры неохота, думаю и так кому надо тот поймет ЗЫ Еще раз всем спасибо, отдельное спасибо [ cash ]`у (я серьезно) действительно самому искать ответы очень полезно, кроме нужной инфы найдешь еще кучу полезной и интересной информации |
| Время: 03:23 |