PDA

Просмотр полной версии : MsSql инъекции


Xex
22.09.2006, 04:16
Вот пара вопросов, тем кто сталкивался, или знает:
1)как просмотреть свои привелегии(в частности, имею право на работу с файлами)?
2)как обратиться из одной базы данных в другую?,т.е. запрос делает выборку из одной бд, а мне надо в другую(вариант типа 'UNION SELECT * FROM otherdb.table1 не катит)

ZaCo
22.09.2006, 13:46
1) работать с файлами средствами мсскл можно разными способами. можно через ком-обьекты, можно получить содержимое bulk'ом. для обоих этих действий необходимы права sysadmin (существуют и права типа булкадмин но их расматривать не нужно тк на практике такое врядли встретишь). проверить принадлежность к группе администраторов можно попробовав обратиться к таблице master..syslogins
2) там по-другому нужно - имя_базы.имя_юзера.таблица чтобы не морочиться обратись просто bd..xek_tablico

Xex
22.09.2006, 16:24
Спасибо, ЗаКо,
я узнал что прав на работу с файлами нету, а вот как узнать хватит ли прав сделать
exec master..xp_cmdshell 'dir > %temp%/hi.txt'
возможности проверить успех выполнения опреции нет, так как нет возможности читать файлы, вариант ping yourself меня совсем не радует.
2)сделал
SELECT catalog_name,schema_name FROM INFORMATION_SCHEMA.SCHEMATA--
получил(как я понял имена БД, принадлежащих текущему пользователю), далее хотел узнать какие таблицы содержат эти бд,но ни один запрос не выполняеться нормально(умирает с ошибкой(ошибку не видно))
SELECT * FROM new_db..INFORMATION_SCHEMA.TABLES;
SELECT * FROM new_db.INFORMATION_SCHEMA.TABLES;
и всякие другие извращенные попытки.

ZaCo
22.09.2006, 17:11
2Xex попробуй подтелнетиться к каком-нибудь самопальному скрипту\программе)
ну к другой базе неудивительно что прав нет. обычно все так и есть)

Xex
22.09.2006, 19:05
to ZaCo:
re:"попробуй подтелнетиться к каком-нибудь самопальному скрипту\программе" - эту прогу/скрипт надо залить,затем запустить, что оч трудно, путей к вебсерверу не знаю,только из БД вытащил filename(e:\mssql7\data\file_Log.LDF) - может поможет.
re:"ну к другой базе неудивительно что прав нет. обычно все так и есть)" - даже несмотря на то, что у всех бд SCHEMA_OWNER один и тот же?

P>S>тык вот этот запрос верен?
-->SELECT TABLE_NAME FROM new_db.INFORMATION_SCHEMA.TABLES--
P>S>S>слушай дай асю, проконсультируюсь=)

ZaCo
22.09.2006, 19:29
нет, запустить прогу нужно у себя. ты начинаешь слушать порт к примеру 80 и делаешь телнет через xp_cmdshell к себе. ну и если к тебе кто-то конектится то пишешь че-нить чтобы понять выполняетс цмд или нет.
если владелец один тогда должно читаться.
SELECT TABLE_NAME FROM new_db.юзер.INFORMATION_SCHEMA.TABLES--
или попробуй так
SELECT TABLE_NAME FROM new_db..INFORMATION_SCHEMA.TABLES--

Xex
22.09.2006, 21:03
re:"делаешь телнет через xp_cmdshell к себе" - я этой темы никогда не понимал,
если делаешь телнет к себе, ты же явно палишь свой ip, объясни мне ящику такому.

ZaCo
22.09.2006, 21:20
мда. возьми шелл залей на какой-нибудь сервак, там запусти свой скрипт который будет слушать 6666-й порт (хотя лучше что-нибудь из стандартного) и при коннекте будет чтонибудь писать в файл например. ну вот, если никаких особых правил для фаерволла сервера с мсскл не стоит тогда при удачном телнете твой скрипт запишет что-нибудь в файл. если он запишет то xp_cmdshell пашет иначе либо фаер либо хер :)

Xex
23.09.2006, 02:40
=)
понял,пасиб тебе!