Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Вопрос по sql-inj в SYBASE |

17.11.2007, 23:29
|
|
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме: 5939734
Репутация:
1917
|
|
Вопрос по 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, т.е. мож кто знает как прочитать таблицы и колонки в БД
__________________
Карфаген должен быть разрушен...
|
|
|

18.11.2007, 01:29
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
Юзай поиск я поднимал этот вопрос, имеет синтаксис TSQL, как и mssql.
|
|
|

18.11.2007, 02:28
|
|
Участник форума
Регистрация: 22.05.2007
Сообщений: 144
Провел на форуме: 306311
Репутация:
119
|
|
Конвертировать пароль можно так
Код:
select convert(varchar,password)
а вот запрос чтобы прочитать таблицы
Код:
select table_name from SYSTABLES
SYSTABLES - Информация обо всех таблицах и представлениях
также есть системные таблицы
SYSMESSAGES - Список всех сообщений об ошибках сервера
SYSKEYS - Информация о ключах и внешних ключах
SYSVIEWS - Тексты всех представлений
SYSCOLUMNS - Информация о столбцах таблиц
SYSINDEXES - Информация об индексах
SYSOBJECTS - Информация о таблицах, триггерах, представлениях и т. п.
SYSDATABASES - Информация обо всех базах данных на сервере
SYSPROCEDURES - Информация о представлениях, триггерах и сохраненных процедурах
|
|
|

18.11.2007, 02:36
|
|
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме: 5939734
Репутация:
1917
|
|
[ cash ] нашел твою статью "Работа С СУБД Через Иньекцию Запроса", больше ничего не нашел, она полезна конечно, но для совсем уж начинающих
поверь, я бы не задавал вопросы, если б все было так просто
расскажу поподробнее: вопервых абсолютно нет вывода ошибок, точка с запятой не фильтруется d _REQUEST (проверял /*;*/) но сама скуля принимать ; не хочет, start at выдает ошибку (top работает) но это ерунда, в _REQUEST фильтруются кавычки, но это тоже ерунда, также фильтрация < и > (они мне не особо пока нужны были, так что тоже ерунда) convert(varchar,password) - не работает (хотя convert (varchar,1) - все нормально) тоже самое c cast(password as varchar)
гдето прочитал что структуру БД можно получить пользуя information_schema (соответственно это не так в моем случае)
да, и еще на серве стоит linux
[ cash ], я так понимаю у тебя есть опыт работы с ase, у меня его нет, думаю не так уж сложно поделится опытом, темболее я понятливый
__________________
Карфаген должен быть разрушен...
|
|
|

19.11.2007, 04:52
|
|
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме: 5939734
Репутация:
1917
|
|
Поле password, как я понял ,запрещено к прочтению, поэтому оно и не выводилось (извиняюсь сразу), SYSTABLES, в стандарте ase 15/0/1 нет, есть syscolumns, [ cash ], скажи, плз, в какую сторону копать для получения таблиц и полей соответственнно, если знаешь конечно
__________________
Карфаген должен быть разрушен...
|
|
|

19.11.2007, 09:02
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
Копать в сторону юзай поиск, вообще скуль провести можно в очень редких случаях.
|
|
|

19.11.2007, 11:15
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
Scipio, ты хоть ссылку покажи... А то ни сообщения об ошибке, никакой другой информации... Инъекция в Sybase очень уж похожа на мелкософтовосерверную... Информация об именах таблиц хранится в системном каталоге:
SELECT table_name FROM SYSTABLE;
или
SELECT table_name FROM SYS.SYSTABLE;
Обратите внимание, что не SYSTABLE S, а SYSTABLE. Имена колонок достаются из SYSCOLUMN, но тут идёт запара... В этой таблице нету привычного текстового поля с описанием таблицы, к которой относится выбираемое название поля... Но зато есть поле SYSCOLUMN.table_id, которое соотносится с SYSTABLE.table_id. По ним не составит труда найти соответствие имён и таблиц...
Теперь что касается перебора... Разве в этом плане что-то изменилось? Всё делается через вывод ошибки (если он включён вообще). Вот пример:
convert(integer,(select+min(table_name)+from+systa ble+where+table_name<>'blablabla'))--
Кстати будьте готовы к неприятностям - в Sybase права могут раздаваться с разграничением по полям... То есть у вас может быть право на чтение одной колонки в табе и совсем не быть права на чтение другой колонки в этой же табе.
Что ещё можно сказать? Выполнение команд через xp_cmdshell 'ipconfig /all'.
Ну и в дополнение скажу, что эксплуатация инъекций в сибейсе весьма затруднительна... Причина этому - разница в грантах на права и объекты по сравнению с другими СУБД и своеобразный синтаксис языка SQL.
|
|
|

23.11.2007, 05:50
|
|
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме: 5939734
Репутация:
1917
|
|
Вобщем проблема решена, всем спасибо
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 таблицы>
ну и перебирать значения colid
Да, забыл сказать, для того что бы перебирать значения можно использовать top start at, но в моем случае это было невозможно (незнаю почему) а переписывать примеры неохота, думаю и так кому надо тот поймет
ЗЫ Еще раз всем спасибо, отдельное спасибо [ cash ]`у (я серьезно) действительно самому искать ответы очень полезно, кроме нужной инфы найдешь еще кучу полезной и интересной информации
__________________
Карфаген должен быть разрушен...
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|