Не работает into outfile

MySQL инъекция. Простое руководство по Load File и Into OutFile

Простое руководство по Load File и Into OutFile. Если вы знакомы с основами MySQL инъекции, вы можете приступить к чтению этого руководства.

Часть 1 – Введение

Хорошо, давайте посмотрим, что такое Load File и Into OutFile.

— Что такое Load File и Into OutFile?

Это команды (используются в MySQL инъекциях).

Load File: Читает содержимое файла и возвращает его в виде строки.

Into OutFile: Записывает выбранные строки в файл. Файл создается на сервере. Таким образом, у вас должны быть права доступа для использования этих команд. Создаваемый файл не должен существовать. Таким образом, помимо прочего, предотвращается уничтожение таблиц и файлов (таких как «/etc/passwd”). (… Источник: MySQL.com)

Часть 2 – Доступ к таблице “mysql.user” и к правам файлов

Вы должны заменить один видимый столбец (т.е. номер, показанный на странице) в URL на строку “user” для того, чтобы увидеть имя пользователя.

http://vulnsite.com/index.php?id=-1+union+all+select+1,user,3,4+from+mysql.user— В нашем примере столбец (номер) 2 может быть увиден на уязвимой странице.

Если страница возвращает имя пользователя на месте отображаемого столбца на сайте — это хорошо. Это значит, что у вас есть доступ к таблице “mysql.user” и вы можете читать дальше. Запомните имя пользователя, которое вы увидели!

В нашем примере это условие выполняется (мы имеем доступ к таблице “mysql.user”) и теперь мы можем проверить права доступа к файлам.

В URL вы должны заменить: «user», строкой «group_concat(user,0x3a,file_priv)», для того, чтобы проверить возможность доступа к файлам на (вашем) уязвимом сайте.

Теперь на месте отображаемого столбца (т.е. замененного) мы видим список пользователей и права доступа к файлам (в формате: Имя пользователя:Права доступа, . ). Вы должны найти имя пользователя, которое вы видели раньше. Когда найдете его, посмотрите на правую сторону (рядом с именем). Если написано «Y» (Yes/Да), значит у вас есть права доступа к файлам и вы можете читать дальше. В противном случае там будет написано «N» (No/Нет) — у вас нет прав доступа.

В нашем примере у нас (разумеется) есть права доступа – “… наш_пользователь:Y,…”

Перейдем к следующей части.

Часть 3 – Используем команду Load File

Например, мы хотим прочитать файл “/etc/passwd”:

Содержимое файла «/etc/passwd» будет отображено в столбце 2.

Примечание 1: «../» – означает выход из текущей директории.

Примечание 2: Если появляется ошибка когда вы пытаетесь прочитать какой-нибудь файл – это значит, что включены волшебные кавычки (эта функция добавляет косую черту до и после символов “”). Вы должны преобразовать имя файла (т.е. текст/строку) в шестнадцатеричный или символьный вид и удалить символы «»:

Для шестнадцатеричного вида всегда добавляйте “0x” перед шестнадцатеричной строкой (без пробелов). Строка не должна содержать пробелов! Например: (Load File — «/etc/passwd»:) load_file(0x2f6574632f706173737764)

Для символьного типа: char(NUMBERS,NUMBERS,NUMBERS. ) ; если вы преобразуете строку (т.е. текст) в символьный вид и преобразованный текст содержит пробелы между номерами, вы должны заменить все пробелы запятыми(!) ; например: (Load File — «/etc/passwd»:) load_file(char(47,101,116,99,47,112,97,115,115,119,100))

Читайте также:  Как отремонтировать своими руками обувь для

Кстати, это поможет в преобразовании текста в шестнадцатеричный и символьный вид: http://home2.paulschou.net/tools/xlate/

С командой Load File мы разобрались.

Часть 4 – Используем команду Into OutFile

Синтаксис: INTO OUTFILE ‘ФАЙЛ’

Примечание 1: Эта команда должна быть всегда в конце! Пример: . +INTO+OUTFILE+’/ФАЙЛ’—

Для записи текста в ваш файл (на уязвимом сайте/сервере) замените один видимый столбец в URL (т.е. номер, который показан на странице) на ваш текст в кавычках, который будет записан в файл…

Рассмотрим наш образец: мы хотим записать текст «testing” в файл “test.txt” (на нашем уязвимом сайте/сервере) в директорию сайта:

Если у вас два видимых столбца или более (т.е. номера, которые показаны на уязвимой странице), вам нужно заменить эти столбцы (т.е. номера в URL) словом «null»(!). Если вы не произведете замену, эти номера будут записаны вместе с вашим текстом в ваш файл на уязвимом сайте/сервере.

В нашем примере видимыми столбцами являются 2 и 3. Таким образом, мы должны произвести следующую замену:

После того как страница загрузится без ошибок, файл будет создан (на нашем уязвимом сайте/сервере), и этот файл будет находиться по адресу: http://vulnsite.com/test.txt

Примечание 3: Если в тексте, записываемого файла вы хотите использовать кнопку Return/Enter, просто преобразуйте текст в шестнадцатеричный или символьный вид.

Примечание 4: Файлы должны создаваться в директории сайта. В противном случае команда Into OutFile не будет работать.

Примечание 5: Если страница где должен располагаться текст, записываемый в файл, пуста (т.е. возникает ошибка) — это значит, что включены волшебные кавычки. Эта функция добавляет косые черты до и после символов «». Вы должны преобразовать текст (т.е. строку) в шестнадцатеричный или символьный вид и удалить символы «». См. объяснение и ссылку в конце 3 части…

Внимание: Не преобразовывайте имя файла в шестнадцатеричный или символьный вид! В противном случае, метод не сработает! Предупреждение действительно только для команды Into OutFile. Если у (вашего) уязвимого сайта включены волшебные кавычки, команда Into OutFile не будет работать.

Источник

MYSQL в outfile «доступ запрещен» — но у моего пользователя есть» весь » доступ.. и папка CHMOD 777

4 ответов

попробуйте выполнить эту команду SQL:

кажется, что у вас возникли проблемы с подключением к базе данных и не писать в папку, которую вы упоминаете.

кроме того, убедитесь, что вы предоставили FILE для пользователей ‘asdfsdf’@’localhost’ .

честно говоря, я не потрудился заниматься грантами, и это работало даже без привилегий:

как говорит @fijaaron,

  1. GRANT ALL не означает GRANT FILE
  2. GRANT FILE работает только с *.*

поскольку cP / WHM отнял возможность изменять права пользователя как root в PHPMyAdmin, вы должны использовать командную строку для:

Шаг 2 должен позволить этому пользователю сбросить файл в определенную папку. Есть несколько способов сделать это, но я закончил тем, что поместил папку в:

это позволяет пользователю mysql писать файл. Как говорили предыдущие плакаты, вы также можете использовать папку MySQL temp, я не думаю, что это действительно имеет значение, но вы определенно не хотите делать это разрешение 0777 (world-writeable), если вы не хотите, чтобы мир видел ваши данные. Существует потенциальная проблема, если вы хотите промыть-повторите процесс как INTO OUTFILE не будет работать, если файл существует. Если ваши файлы принадлежат другому пользователю, просто попробуйте unlink($file) не работает. Если вы похожи на меня (параноик о 0777), то вы можете установить свой целевой каталог, используя:

Читайте также:  Не работает датчик скорости ваз 21124

непосредственно перед выполнением команды SQL, тогда

сразу после, а затем unlink(file) для удаления файла. Это держит все это работает под вашим веб-пользователем и не нужно вызывать пользователя mysql.

Источник

SELECT * INTO OUTFILE из представления не работает, но базовый запрос работает нормально INTO OUTFILE

Я выполняю запрос, который вычисляет на основе некоторых представлений, и записывает результаты в файл. Это выглядит так:

Это отлично работает. Я создал представление, основанное на этом запросе, но он не работает как замена, как я и ожидал. Здесь часть «Создать вид» SHOW CREATE VIEW:

Здесь запрос, который не работает:

Я получил эту ошибку:

ERROR 1356 (HY000): View ‘database_name.view_name’ references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them

Я работаю как root, поэтому я не думаю, что есть какие-либо проблемы с правами. Что может сделать этот запрос недопустимым в глазах MySQL? Я запускаю версию 5.5.32-0ubuntu0.12.04.1 (Ubuntu)

EDIT: Запуск SELECT * FROM view_name возвращает записи, как ожидалось. Однако с тысячами строк и необходимостью форматирования я предпочел бы использовать INTO OUTFILE .

2 ответа

Эта ветка становится немного старой, но она имеет далеко лучшее представление нескольких (нерешенных) сообщений по этому вопросу, поэтому вот что я нашел:

Как вы можете догадаться, поскольку ошибка появляется при добавлении части «в файл», недостающее разрешение — это доступ к файлам (и да, сообщение об ошибке вводит в заблуждение).

В самом деле, если вы предоставите определителю вида глобальные привилегии FILE, ошибка исчезнет. (И это делает сообщение об ошибке вводимым в заблуждение вторым способом, поскольку похоже, что разрешения вызывающего абонента не имеют никакого отношения — хотя они должны, ИМХО.)

Я попытался бы просто запустить select без экспорта в файл в первую очередь. Выберите * из внешнего файла

Источник

Не работает into outfile

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

Секрет
Теперь, когда вы уже наверняка второпях отправили свой запрос,
я расскажу вам простой секрет, который сэкономит вам уйму ожиданий,
даже если первый ответ по теме последуем сразу же.

Само собой я знаю что ответят мне тут же, и если я посмотрю
на сообщения на форуме, то пойму что в общем то я и не ошибаюсь.
Но еще я точно замечу, что очень мало тем, в которых всего два ответа :
вопрос автора и еще два сообщение вида Ответ + Спасибо

После этого приходится начинать уточнять этим неграмотным что мне надо.
Они что, сами читать не умеют? А уточнять приходится.
И иногда пока они переварят то что я им скажу проходит и не одна ночь..

Уверен что если бы я им сказал что у меня есть
фиолетовый квадрат, и нужно превратить его в синий треугольник
и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
но почему то кисточка не принимала цвет краски в банке,
то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
предложив её открыть, а не тратить еще стольник на жестянку.

Читайте также:  Почему графический планшет не работает при подключении

Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
Что есть
Что нужно получить
Как я пытался
Почему или что у меня не получилось.

На последок как оно происходит на форумах

Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно.

Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12

Источник

SELECT INTO OUTFILE не работает?

Я продолжаю пытаться запустить эту функцию и переписал ее всеми возможными способами, но не могу заставить ее работать:

Что я делаю не так или что может быть не так ?

2 ответа

Я пытаюсь сделать SELECT INTO OUTFILE и я получаю следующее сообщение об ошибке: General error: 1 Can’t create/write to file ‘/home/jason/projects/mcif/web/downloads/dump.csv’ (Errcode: 13). Failing Query: SELECT name INTO OUTFILE ‘/home/jason/projects/mcif/web/downloads/dump.csv’ FIELDS.

Я запускаю запрос, который выполняет вычисления на основе некоторых представлений и записывает результаты в файл. Это выглядит так: select `v1`.`id` AS `id`,`v2`.`name` AS `name`, `v2`.`nbr` AS `nbr`, `v1`.`nbr` AS `total`, (`v2`.`nbr` / `v1`.`nbr`) AS `percent` INTO OUTFILE.

mysql пользователь должен иметь доступ на запись к пути в $backup

Введите ps-Af, чтобы узнать имя пользователя вашего webserver (обычно apache или httpd) Затем введите chown -R apache:apache (или httpd respactively) в одной папке в каталоге резервного копирования Затем введите chmod u+w Я думаю, что, поскольку webserver пытается записать файл, у него должны быть разрешения на запись

Похожие вопросы:

Есть идеи, почему это не удается в MySQL 5.1: SET @LOAD_TIME = UNIX_TIMESTAMP(); SET @OUTFILE = CONCAT(CONCAT(‘/tmp/outfile_’, @LOAD_TIME), ‘.sql’); SELECT * FROM `tableA` INTO OUTFILE @OUTFILE; Это.

Этот запрос: SELECT . INTO OUTFILE ‘/usr/services/001/tmp/`database4ed78d1eb0986`.`tblTemporaryReportFinishedOrders`.tmp’; Производит эту ошибку: Error Code: 1. Can’t create/write to file.

Когда я выполняю mysql> select * into outfile /home/akihirom/file1.txt from BAIT_INTERACTION; Я получаю следующую ошибку: ERROR 1 (HY000): не удается создать/записать в файл.

Я пытаюсь сделать SELECT INTO OUTFILE и я получаю следующее сообщение об ошибке: General error: 1 Can’t create/write to file ‘/home/jason/projects/mcif/web/downloads/dump.csv’ (Errcode: 13). Failing.

Я запускаю запрос, который выполняет вычисления на основе некоторых представлений и записывает результаты в файл. Это выглядит так: select `v1`.`id` AS `id`,`v2`.`name` AS `name`, `v2`.`nbr` AS.

Возможно ли это, и если да, то как, могу ли я SELECT . INTO OUTFILE и не заключать его в какой-либо символ. Пока что это не работает: SELECT hour_stamp, day_stamp, month_stamp, hour, day, month.

Источник

Оцените статью