前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XSS攻击在新花样

XSS攻击在新花样

作者头像
老K博客
发布2024-06-29 10:10:26
630
发布2024-06-29 10:10:26
举报
文章被收录于专栏:老K博客老K博客

XSS攻击是一种传统的攻击方式,但随着这么多年的技术发现,尤其是在新的技术环境下,有人已经玩出了很多新花样。

一、JavaScript的键盘记录器

在JavaScript中创建键盘记录器通常涉及到监听键盘事件,但是出于隐私和安全的原因,现代浏览器限制了对键盘事件的访问,特别是跨域和在某些情况下,如在HTTPS页面上运行的HTTP脚本,浏览器会阻止键盘事件的监听。

具体实现的伪码如下:

代码语言:javascript
复制
document.addEventListener('keydown', function(event) {
  console.log('Key pressed:', event.key);
  // 这里可以添加你想要执行的代码
});

document.addEventListener('keyup', function(event) {
  console.log('Key released:', event.key);
  // 这里可以添加你想要执行的代码
});

document.addEventListener('keypress', function(event) {
  console.log('Key pressed and released:', event.key);
  // 这里可以添加你想要执行的代码
});

二、JQuery键盘记录器

jQuery监听键盘事件与原生JavaScript类似,但使用jQuery可以使得代码更加简洁。以下是使用jQuery来监听键盘事件的示例代码:

代码语言:javascript
复制
$(document).ready(function() {
    $(document).keydown(function(event) {
        console.log('Key pressed:', event.which); // event.which 返回按键的键码
    });

    $(document).keyup(function(event) {
        console.log('Key released:', event.which);
    });

    // keypress 事件在按下并释放键时触发,适用于获取字符输入
    $(document).keypress(function(event) {
        console.log('Key pressed and character input:', String.fromCharCode(event.which));
    });
});

在页面加载完成后,为整个页面添加键盘事件的监听器。keydown事件在用户按下键时触发,keyup事件在用户释放键时触发,而keypress事件则在按下键并输入字符时触发。这种方式,要比原生的javascript简洁得多,不同的是,要依赖网页的jQuery类库,或者直接引用云端的jQuery类库。

三、HTML5截图

在HTML5中,可以使用canvas元素和toDataURL方法来实现截图功能。以下演示如何捕获网页上的截图:

代码语言:javascript
复制
function captureFullPage() {
    var canvas = document.createElement('canvas');
    var context = canvas.getContext('2d');
    var width = window.innerWidth;
    var height = window.innerHeight;

    canvas.width = width;
    canvas.height = height;

    // 将页面绘制到canvas上
    context.drawWindow(window, 0, 0, width, height, 'transparent');

    // 将canvas转换为图片数据URL
    var imageData = canvas.toDataURL('image/png');

    // 处理图片数据URL,如下载或显示
    console.log(imageData);//也可以直接发送到远端
}

这样,就会捕获当前视口的整个页面截图。如果需要捕获整个长页面,可能需要滚动页面并多次截图。

四、基于XHR的内网端口扫描

使用原生JavaScript和XMLHttpRequest (XHR) 来实现一个简单的端口扫描器:

代码语言:javascript
复制
function scanPort(port, host) {
    var url = 'http://' + host + ':' + port + '/test'; // 测试的URL,可以根据需要更改路径
    var xhr = new XMLHttpRequest();

    xhr.onreadystatechange = function() {
        if (xhr.readyState === XMLHttpRequest.DONE) {
            if (xhr.status === 0) {
                console.log('Port ' + port + ' is closed or blocked by CORS.');
            } else if (xhr.status === 200) {
                console.log('Port ' + port + ' is open.');
            } else {
                console.log('Port ' + port + ' responded with status:', xhr.status);
            }
        }
    };

    xhr.open('HEAD', url, true);
    xhr.send();
}

// 使用示例:扫描example.com的80端口
scanPort(80, 'example.com');
scanPort(8080, 'example.com');

本文共 523 个字数,平均阅读时长 ≈ 2分钟

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024年06月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、JavaScript的键盘记录器
  • 二、JQuery键盘记录器
  • 三、HTML5截图
  • 四、基于XHR的内网端口扫描
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档