首页 > 解决方案 > 将 Javascript 数据发送到 SimpleHTTPServer

问题描述

我正在 tryhackme.com ( https://tryhackme.com/room/xss ) 上进行 xss 挑战。第 7 个任务要求我使用一个简单的键盘记录器

 <script type="text/javascript">
 let l = "";
 document.onkeypress = function (e) {
   l += e.key;
   console.log(l);
 }
</script> 

并将输入发送到,http://<vm ip>/log/<this data will be logged>因为这将记录可以通过转到查看的击键http://<vm ip>/logs。我已经尝试过诸如 之类的东西window.location,但无法使其正常工作。

为了进一步学习,我还想将数据发送到我SimpleHTTPServer在端口上运行的数据8000,以便在网页上键入密钥时,它们会显示在我的终端中。我不能让它工作。

有人可以告诉我怎么做吗?

不,我没有恶意。我正在学习,因为我想从事网络安全工作。如果我是恶意的,我只会使用我在 GitHub 上找到的脚本或其他东西,而不了解它们是如何工作的。

谢谢你。

标签: javascriptxsssimplehttpserver

解决方案


排除很多打包资源,可以使用一个简单的WEB API来达到这个目的。这里简单介绍两个WEB API

获取 API

Fetch API提供了一个 JavaScript 接口,用于访问和操作 HTTP 管道的各个部分,例如请求和响应。

fetch('http://example.com/movies.json')
  .then(function(response) {
    return response.json();
  })
  .then(function(myJson) {
    console.log(myJson);
  });

XMLHttpRequest API

XMLHttpRequest (XHR) 对象用于与服务器交互。您可以从 URL 检索数据,而无需刷新整个页面。这使得网页可以只更新页面的一部分,而不会中断用户正在做的事情。

function reqListener () {
  console.log(this.responseText);
}
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", "http://www.example.org/example.txt");
oReq.send();

推荐阅读