
Alexander
24.11.2016
13:01:12
вообще да ) Но там должно получаться что-то типа name='.mysqli_real_escape_string('text').' и потом это в eval идет
а не, в eval идет name='.mysqli_real_escape_string($arg[0]).'

Dmitry
24.11.2016
13:03:07
хреново... как хоть кодировку базы ставишь? mysqli_set_charset используешь?

Alexander
24.11.2016
13:03:43
да

Google

Dmitry
24.11.2016
13:04:03
Именно ее? Или ...query("SET NAMES 'utf8'");

Alexander
24.11.2016
13:04:33
именно её ) $mysqli->set_charset('utf8') как-то так

Dmitry
24.11.2016
13:05:09
Но в общем один из способов поломать real_escape_string и выйти за ее рамки получив иньекцию, насколько я знаю, это как раз не совсем валидный utf8

Alexander
24.11.2016
13:06:21
надо гуглить, походу она и режет, тк utf8_general_ci должен любые арабским символы хранить ну или пустые квадратики должны хотя бы быть )

Dmitry
24.11.2016
13:06:25
можно еще попробовать на utf8mb4 перейти
и я бы тебе советовал на плейсхолдеры перебраться...

Alexander
24.11.2016
13:07:26
какие именно? У меня там самодельные есть...

Dmitry
24.11.2016
13:07:56
родные

Alexander
24.11.2016
13:08:24
они массивы не поддерживают и тп

Dmitry
24.11.2016
13:08:53
ты можешь навернуть сверху что угодно, все-равно финальный запрос - строчка
Кстати, кто знает, mysqli плейсхолдеры "нативные" мускулевские или эмулируются?

Alexander
24.11.2016
13:10:58
не знал что в mysql есть нативные плейсхолдеры ) Но переписывать это такой геммор, у меня там 4х слойная обертка над БД.

Dmitry
24.11.2016
13:11:34
значит твой код пахнет ;)

Google

Alexander
24.11.2016
13:11:59
ну да ) Но зато есть и орм и нативные запросы ))
хотя я давно хотел переделать первые 2 слоя ) Но никто за это платить не будет...

Алексей
24.11.2016
15:19:22
что значит запоминать?
ну у меня есть input куда я ввожу команды
далее команда через XHR улетает в php и там исполняется в shell_exec
вводим ls -l => директория текущего файла. вводим cd / ничего не показывает
вводим cd /;ls -l одной строкой выводит директорию корня
но после этого ls -l опять выводит директорию файла скрипта
отсюда и вопрос: как запомнить текущую директорию после выполнения "cd /" чтобы следующая команда исполнялась уже там

Dmitry
24.11.2016
15:21:12
в сессии

Pavel
24.11.2016
15:21:33

Алексей
24.11.2016
15:24:24
в сессии
эм? а причем тут сессия? XHR как бы страницу то не перегружает. или я чего то не понимаю?

Dmitry
24.11.2016
15:25:19
а причем тут перезагрузка страницы, у тебя php оперирует не "страницами", а запросами. Раз запрос, два запрос. XHR - тот же самый запрос
А сессия - сохранение состояния между запросами построенное на сохранении в куках некого ID. При аяксовых зарпосах куки передаются прекрасно, значит все будет работать.

Алексей
24.11.2016
15:26:37
если я правильно понял то будет не так:
{ запрос } { запрос }
а так:
{ запрос ... запрос }
и соответствуенно директория будет запоминаться? так?
тогда еще вопрос) в линукс системах директория меняется только через "CD" или есть еще какие то операторы?
мне же нужно писать функцию запоминания тогда а сам shell_exec('cd /') в ответ ничего не возвращает

Dmitry
24.11.2016
15:33:24
нет, тебе самому нужно запоминать после каждого запроса pwd в сессию, и перед каждым новым запросом и извлекать из сесси это значение и делать сwd

Алексей
24.11.2016
15:34:11
"я не волшебник я только учусь" что есть PWD CWD насколько я понимаю это линуксовое чтото?
все понял спасибо за совет
пилю далее

Dmitry
24.11.2016
15:35:43
на самом деле все не просто

Алексей
24.11.2016
15:35:45
гугл помог)
что именно?

Dmitry
24.11.2016
15:36:09
получить текущую директорию
miksir@gidra:~$ php -a
Interactive mode enabled
php > echo getcwd();
/home/miksir
php > shell_exec("cd /tmp");
php > echo getcwd();
/home/miksir
php >

Google

Алексей
24.11.2016
15:38:39
ты о том что shell_exec в пхп может быть тупо запрещен?

Dmitry
24.11.2016
15:39:21
Я о том, что shell_exec выполняется в отдельном окружении, и смена текущей директории никак на пхп не влияет
и более того каждый shell_exec - исполняется в новом окружении, скопированном с пхп, т.е. shell_exec("cd /tmp"); echo shell_exec("pwd"); даст в моем случае /home/miksir

Алексей
24.11.2016
15:41:22
а если чтото типа:
после какжой команды в shell_exec
$dir = shell_exec('pwd');
$_SESSION['dir'] = $dir
ну и каждый раз её просто устонавливать
он же как раз будет получать текущую директорию shell

Dmitry
24.11.2016
15:41:36
т.е. у тебя единственный вариант - парсить запрос на наличие cd path в пхп перед shell_exec и сохранять это значение. А команды выполнять как shell_exec("cd " . $path . "; " . $mycommand);

Salavat
24.11.2016
15:42:36
А зачем шелл? Есть же нативные функции работы с папками и файлами?

Алексей
24.11.2016
15:42:40
думаю так и сделаю. спс
это затем чтобы руку набить с пхп
сам себе придумал

Salavat
24.11.2016
15:43:22
Я про shell_exec

Алексей
24.11.2016
15:43:53
а если в терминал ввести "cd / " не получится никакой рекурсии? типа "cd /. $PATH" где $PATH = 'cd /home/dir/dir'

Salavat
24.11.2016
15:44:03
Зачем реально ходить по папкам - когда это можно эмулировать

Алексей
24.11.2016
15:44:21
Салават пока не понимаю тебя

Dmitry
24.11.2016
15:44:25

Salavat
24.11.2016
15:44:33

Dmitry
24.11.2016
15:44:54

Алексей
24.11.2016
15:45:06

Denis
24.11.2016
15:46:58

Dmitry
24.11.2016
15:47:19
if (detectCd($command)) {
$_SESSION['cd'] = $command;
} else {
exec_shell( $_SESSION['cd'] . "; ". $command);
}
типа так

Google

Алексей
24.11.2016
15:47:46
я понимаю что изврат но мне кажется при такой задаче я смогу поднятся выше чем if (isset($_POST['name'])) {mail(blablabla)}

Salavat
24.11.2016
15:48:36
Тамогочи на пхп - вот это я понимаю

Dmitry
24.11.2016
15:48:40
=)

Алексей
24.11.2016
15:48:43
я так понимаю detectCd самому нада писать)

Dmitry
24.11.2016
15:49:07
угу

Алексей
24.11.2016
15:49:25
дойдем и до тамагочи) хотя мне кажется как раз это и есть набор алгоритмов просто. а вот терминал же не будет знать что ему могут ввести

Dmitry
24.11.2016
15:49:49
конечно у тебя будт проблемы если в $command будет составная команда

Алексей
24.11.2016
15:50:08
это как в PVE игрушке убивать босса или в PVP хз чего ожидать от противника)

Salavat
24.11.2016
15:50:13

Алексей
24.11.2016
15:50:41
sudo rm -rf / уже научен.. на собственном горьком опыте)

Dmitry
24.11.2016
15:51:21
это уже сложно ;) забей

Алексей
24.11.2016
15:51:55
вооот. это то и интересно) то что сложно
кстати. я правильно понимаю что если на сервере запрететить выполнение shell_exec то шельмекегельбешайтанама?

Dmitry
24.11.2016
15:52:46
синтаксический парсер баша все-равно не напишешь

Алексей
24.11.2016
15:53:20
bash на чем написан? на C?

Dmitry
24.11.2016
15:53:24
угу

Алексей
24.11.2016
15:53:47
и пхп на C разве нет. почему не возможно написать?

Dmitry
24.11.2016
15:54:06
я не сказал, что невозможно написать ;) я сказал, что ты не напишешь ;)

Google

Алексей
24.11.2016
15:54:21
ааа ну это да)
ну москва не сразу строилась)
я помню когда верстал сайты и ради каждой команды на js бегал в отдел разрабов)))
а потом психанул и начал учить js
еще такой вопрос. сессию обязательно закрывать?

Алексей
24.11.2016
15:57:59

Алексей
24.11.2016
15:58:52
в универе я когда то не закрыл) через 2 дня будет 10 лет как отслужил уже)

Dmitry
24.11.2016
15:59:06

Алексей
24.11.2016
15:59:56
ну т.е. при следующем session_start() он же увидит сохраненную в сессии переменную?

Dmitry
24.11.2016
16:05:22
угу

Алексей
24.11.2016
17:16:37
сваял я такую штуку:
^cd$|^cd\s|^cd\w*
но вот почему то не работает вот так: ^cd\s\w

Artur
24.11.2016
17:17:27

Алексей
24.11.2016
17:17:38
?

Artur
24.11.2016
17:17:53
страшно подумать зачем

Алексей
24.11.2016
17:18:57
не суть зачем суть в том что я не так делаю. почему последовательность \s\w не работает

Artur
24.11.2016
17:20:10
а что по твоемук оно означает?

Алексей
24.11.2016
17:20:30
ну я думал что сначала пробел а потом любой символ

Artur
24.11.2016
17:21:03
а если 2 пробела?

Алексей
24.11.2016
17:21:33
\s*
xtv cnt,fncmz kexit , gjlcrfpfk ult negk.)