Синтаксическая ошибка BASH nc -vvv 192.168.190.130 80 GET /<? Php system ($ _ GET ['cmd']);?> Bash: синтаксическая ошибка рядом с неожиданным токеном `('

Это запрос, который я генерирую для практики LFI.

nc -vvv 192.168.190.130 80 GET /<?php system($_GET['cmd']);?>

Это ошибка, которую я получаю:

bash: синтаксическая ошибка рядом с неожиданным токеном `('

Тока с помощью UBUNTU 18.04.

1 ответ

1) Вам необходимо указать параметры в команде, если они содержат символы, которые bash интерпретирует как специальные символы. Одиночные кавычки лучше всего избегать строки, в противном случае вы можете использовать обратную косую черту для экранирования отдельных символов. Остерегайтесь вложенных цитат того же типа.

Так:

nc -vvv 192.168.190.130 80 'GET /<?php system($_GET["cmd"]);?>'

2) LFI так не работает. Код PHP должен быть в теле файла, который вы получаете, а не в имени файла. Имя файла не анализируется для <?php ... ?> теги.

Так что это просто попросит сервер дать ему файл с буквальным названием < из корневой папки сайта, а? будет проанализирован как начало некоторых параметров.

3) Даже если он каким-то образом обнаружит и запустит код PHP как часть имени файла, каким будет $_GET["cmd"]? Вы не передали это как параметр GET!

4) Если это не то, что вы запускаете, а содержимое PHP-скрипта, который вы вызываете на веб-сервере... в этом случае вы пытаетесь выполнить какое-то удаленное выполнение кода... тогда вы передаете вывод сценария, который вы указали в качестве параметра GET (не делайте этого, это очень небезопасно), в путь, который вы получаете от другого сервера через системный вызов netcat. В таком случае, почему бы просто не сделать что-то вроде:

 <?php file_get_contents('http://192.168.190.138/system($_GET["cmd"])); ?>

... вместо вызова netcat?


В целом, я боюсь, что это похоже на то, как будто кто-то пытается объединить две или три вещи, которые они нашли в Интернете, не понимая, как работает какая-либо из них.

Но способ понять их - это делать точно так же, как вы: читать документы, играть с командами, и каждый раз, когда у вас появляется ошибка, задавать вопросы и копать глубже, выяснять, что пошло не так.

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

Но это нормально, до тех пор, пока вы сталкиваетесь с каждым уровнем неправильности, когда сталкиваетесь с ним. Это то, как мы все учимся, к сожалению:D

Другие вопросы по тегам