javascript - 将 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 上找到的脚本或其他东西,而不了解它们是如何工作的。
谢谢你。
解决方案
排除很多打包资源,可以使用一个简单的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();
推荐阅读
- reactjs - 如何为小容器设置材质ui断点?
- java - java.net.ConnectException / java.nio.channels.UnresolvedAddressException
- angular - 使用 ngSwitchCase 为每个组件提供不同的路由
- symfony - 带有选项的简单管理员自定义批处理操作
- hyperledger-fabric - 用户私钥在用户密钥生成过程中存储在fabric-ca中的什么位置
- java - 如何设计和验证对 jax-rs REST API 中子资源的访问以避免代码重复?
- python - 将负整数附加到列表 Python 中
- php - Php/Ajax 多张图片上传 - 一张一张
- airflow - Airflow2 gitSync DAG 适用于气流命名空间,但不适用于备用命名空间
- php - php - 将数组值转换为使用管道分隔的相同值(非字符串)