当前位置: 首页 > news >正文

xss初识(xss-lab)

XSS跨站脚本

XSS漏洞概述

XSS被称为跨站脚本攻击(Cross-site scripting),由于和CSS(Cascading 
Style Sheets) 重名,所以改为XSS。
XSS主要基于javascript语言完成恶意的攻击行为,因为javascript可以非常灵活的
操作html、css和浏览器

XSS就是指通过利用网页开发时留下的漏洞(由于Web应用程序对用户的输入过滤
不足),巧妙的将恶意代码注入到网页中,使用户浏览器加载并执行攻击者制造的恶意
代码,以达到攻击的效果。这些恶意代码通常是JavaScript,但实际上也可以包括Java、
VBScript、ActiveX、 Flash 或者普通的HTML。

当用户访问被XSS注入的网页,XSS代码就会被提取出来。用户浏览器就会解析这
段XSS代码,也就是说用户被攻击了。
用户最简单的动作就是使用浏览器上网,并且浏览器中有javascript 解释器,可以
解析javascript,然而由于浏览器并不具有人格,不会判断代码是否恶意,只要代码符
合语法规则,浏览器就会解析这段XSS代码。

简单来说,XSS就是通过攻击者精心构造的JS代码注入到网页中,并由浏览器解释
运行这段JS代码,以达到恶意攻击浏览器的效果。XSS攻击的对象是用户浏览器,属于
被动攻击。因此XSS攻击涉及到三个角色:
➢ 攻击者
➢ 用户浏览器
➢ 服务器

哪些地方容易受到xss攻击

微博、留言板、聊天室等等收集用户输入的地方,都有遭受XSS 的风险。
只要对用户的输入没有进行严格的过滤,就有可能遭受XSS攻击。

常用XSS验证


➢ <script>alert(/xss/)</script>
➢ <script>confirm('xss')</script>
➢ <script>prompt("xss")</script>

XSS危害


➢ 盗取各种用户账号
➢ 窃取用户Cookie资料,冒充用户身份进入网站
➢ 劫持用户会话,执行任意操作
➢ 刷流量,执行弹窗广告
➢ 传播蠕虫病毒
➢ 攻击者能在一定限度内记录用户的键盘输入

XSS分类


XSS根据其特性和利用手法的不同,主要分为三大类型:


➢ 反射型XSS

---反射型XSS又称为非持久型XSS,是现在最容易出现的一种XSS漏洞。用户在请    求某条URL地址的时候,会携带一部分数据。当客户端进行访问某条链接时,攻击者可以将恶意代码植入到URL,如果服务端未对URL携带的参数做判断或者过滤处理,直接返回
响应页面,那么XSS攻击代码就会一起被传输到用户的浏览器,从而触发反射型XSS。

特点
非持久性
参数型脚本
反射型XSS的JS代码在Web应用的参数(变量)中,如搜索框等地方
数据流量走向:浏览器 -> 后端 -> 浏览器


➢ 存储型XSS---

存储型XSS又叫持久型XSS。一般而言,它是三种XSS里危害最大的一种。此类型的
XSS漏洞是由于恶意攻击代码被持久化保存到服务器上,然后被显示到HTML页面之中。
这类漏洞经常出现在用户评论的页面,攻击者精心构造XSS代码,保存到数据库中,当
其他用户再次访问这个页面时,就会触发并执行恶意的XSS代码,从而窃取用户的敏感
信息。

特点
持久性跨站脚本
持久性体现在JS代码不是在某个参数(变量)中,而是写进数据库或文件等可以永
久保存数据的介质中,如留言板等地方
数据流量走向:浏览器 -> 后端 -> 数据库 -> 后端 -> 浏览器


➢ DOM型XSS

DOM型XSS漏洞是基于文档对象模型(Document Object Model)的一种漏洞。
这种XSS与反射型XSS、持久型XSS在原理上有本质区别,它的攻击代码并不需要服务
器解析响应,触发XSS靠的是浏览器端的DOM解析。客户端上的JavaScript脚本可以
访问浏览器的DOM并修改页面的内容,不依赖服务器的数据,直接从浏览器端获取数
据并执行。在客户端直接输出DOM内容的时候极易触发DOM型XSS漏洞,如
document.getElementByld("x").innerHTML、document.write等。

➢ DOM型XSS
特点
非持久性
数据流量走向:URL -> 浏览器

XSS payload构造以及变形

XSS payload构造


➢ 利用事件
事件种类
windows事件---对windows 对象触发的事件
Form 事件---HTML 表单内的动作触发事件
Keyboard 事件---键盘按键
Mouse 事件---由鼠标或类似用户动作触发的事件
Media 事件---由多媒体触发的事件

<img src='./smile.jpg' οnmοuseοver='alert(/xss/)'>
<input type="text" οnclick="alert(/xss/)">

➢ 利用CSS
可以利用CSS(层叠样式脚本)触发XSS。但是这种方法比较古老,基本上不适合现在
主要的浏览器,但是从学习的角度,我们需要了解这种类型的XSS,以下代码均在IE6
下测试:
行内样式
<div style="background-image:url( javascript:alert(/xss/))">
页内样式
<style>Body{background-image:url( javascript:alert(/xss/))}</style>

外部样式
<link rel="stylesheet" type="text/css" href="./xss.css">
expression
<div style="width:expression(alert(/xss/))">

常用的标签与属性

1.scirpt 标签

<script> 标签用于定义客户端脚本,比如 JavaScript。
<script>alert(1);</script>
<script>alert("xss");</script>

2.img 标签

<img> 标签定义 HTML 页面中的图像。
<img src=1 οnerrοr=alert(1);>
<img src=1 οnerrοr=alert("xss");>

3.input 标签

<input> 标签规定了用户可以在其中输入数据的输入字段。
onfocus 事件在对象获得焦点时发生:
<input οnfοcus=alert(1);>

竞争焦点,从而触发onblur事件:

<input οnblur=alert(1) autofocus><input autofocus>


input 标签的 autofocus 属性规定当页面加载时 元素应该自动获得焦点。可以通过autofocus属性自动执行本身的focus事件,这个向量是使焦点自动跳到输入元素上,触发焦点事件,无需用户去触发

<input οnfοcus="alert(1);" autofocus>
" οnclick=alert(1)>        这样需要点击一下输入框<br>
" οnmοuseοver=alert(1)>    需要鼠标划过输入框<br>

4.details 标签

<details> 标签通过提供用户开启关闭的交互式控件,规定了用户可见的或者隐藏的需求的补充细节。ontoggle 事件规定了在用户打开或关闭 <details> 元素时触发:

<details οntοggle=alert(1);>

使用details 标签的 open 属性触发ontoggle事件,无需用户去点击即可触发:

<details open οntοggle=alert(1);>

5.svg 标签

<svg> 标签用来在HTML页面中直接嵌入SVG 文件的代码。
<svg οnlοad=alert(1);>

6.select 标签

<select> 标签用来创建下拉列表。
<select οnfοcus=alert(1)></select>

通过autofocus属性规定当页面加载时元素应该自动获得焦点,这个向量是使焦点自动跳到输入元素上,触发焦点事件,无需用户去触发:


<select οnfοcus=alert(1) autofocus>

反射型xss-lab练习

less-1

less-2

这里使用了htmlspecialchars过滤

关于这个函数的使用

原理

当使用 htmlspecialchars() 函数替换特殊字符后,实际上改变了这些界定符的表示形式,使它们失去了原有的特殊意义:

  • < 被替换为 &lt;,浏览器会将其视为一个字符实体,表示一个小于号,而不是一个标签的开始。
  • > 被替换为 &gt;,同样被视为大于号的实体,而不是标签的结束。

<标签开始状态----标签名----->数据状态

这里<是数据开始状态,浏览器会将其视为一个字符实体,表示一个小于号,而不是一个标签的开始。

这里考虑闭合

less-3

对输入的括号替换

less-4

同less-3"闭合

less-5

替换了on开头事件,和script标签

使用其他标签

less-6

过滤

大小写绕过

less-7

替换成空,考虑双写

less-8

把javascript:alert(1)转为实体编码

less-9

增加检测http://

less-8代码后面加//http://,开头//注释

less-10

str33是t_sort的过滤

更改类型为text创建一个可以让用户输入文本的单行输入框,hidden是不可见的

less-11-13

11修改HTTP_REFERER

12修改HTTP_USER_AGENT

13修改cookie

DOM型xss   dvwa中级

通过js控制页面产生xss

查看代码过滤script

正常使用发现不成功,需要闭合标签

存储型xss

相关文章:

xss初识(xss-lab)

XSS跨站脚本 XSS漏洞概述 XSS被称为跨站脚本攻击&#xff08;Cross-site scripting&#xff09;&#xff0c;由于和CSS&#xff08;Cascading Style Sheets&#xff09; 重名&#xff0c;所以改为XSS。 XSS主要基于javascript语言完成恶意的攻击行为&#xff0c;因为javascri…...

Autodesk Revit产品痛点

1.Revit已有20多年的历史&#xff0c;大多数软件公司认为大多数代码最多只有10年的生命周期。 2.Revit核心部分仍局限于单个CPU核心上,严重制约性能提升。 3.Revit只在数据库的大小和小细节上的改动。 4.Revit陈旧的绘图技术和性能难以提升。 5.Revit的致命弱点是模型增长的…...

如何使用Windows备份轻松将数据转移到新电脑?这里有详细步骤

序言 我们都知道那种买了一台新电脑,就想直接上手的感觉。我记得在过去的日子里,要花几个小时传输我的文件,并试图复制我的设置。在当今传输数据的众多方法中,Windows备份提供了一个简单可靠的解决方案。 登录到你的Microsoft帐户 Microsoft在传输过程中使用其云存储来保…...

【linux】操作系统使用wget下载网络文件,内核tcpv4部分运行日志

打印日志代码及运行日志(多余日志被删除了些)&#xff1a; 登录 - Gitee.comhttps://gitee.com/r77683962/linux-6.9.0/commit/55a53caa06c1472398fac30113c9731cb9e3b482 测试步骤和手段&#xff1a; 1、清空 kern.log&#xff1b; 2、使用wget 下载linux-6.9.tar.gz&…...

QT中常用控件的样式美化,已上传相应的qss样式和图片资源

1、QComboBox /*仅仅输入框*/ QComboBox {background-color: transparent;border-image: url(:/images/systemSetImage/common/comboBoxBk.png);border: 1px solid #7285CA...

Vue form表单验证

el-form 标签添加 ref、rules <el-form ref"form" :inline"true" :model"form" :rules"rules">el-form-item 添加prop <el-form-item label"姓名" prop"name"><el-input placeholder"请输入姓…...

vue.extend解决vue页面转构造函数暴露js供全局使用

用途: 解决在一些微前端项目中, B工程使用A工程的弹窗代码 // MaterialListPlugin.js文件, 在项目入口引入 // eg: 在main.js中添加一行 import /components/MaterialListPlugin.jsimport Vue from vue import MaterialListPlugin from /components/MaterialListPlugin.vue //…...

Java中如何处理异常?

在Java中处理异常是确保软件健壮性和提高代码质量的重要手段。以下是Java异常处理的一些关键点和最佳实践&#xff1a; 1&#xff1a;理解异常类型&#xff1a; Java中的异常分为检查异常&#xff08; checked exceptions&#xff09;和非检查异常&#xff08;un-checked exc…...

wordpress站群搭建3api代码生成和swagger使用

海鸥技术下午茶-wordpress站群搭建3api代码生成和swagger使用 目标:实现api编写和swagger使用 0.本次需要使用到的脚手架命令 生成 http server 代码 goctl api go -api all.api -dir ..生成swagger文档 goctl api plugin -plugin goctl-swagger"swagger -filename st…...

如何在使用 Qt 时打印到控制台

在开发过程中&#xff0c;打印变量值到控制台对于调试和监控非常重要。使用 Qt 和 C 开发时&#xff0c;有多种方法可以实现这一点。在本文中&#xff0c;我们将探索几种在 Qt 中打印到控制台的专业方法。 1. 使用 qDebug、qWarning、qCritical 和 qFatal Qt 提供了一些方便的…...

ffmpeg音视频开发从入门到精通——ffmpeg下载编译与安装

音视频领域学习ffmpeg的重要性 音视频领域中ffmpeg的广泛应用&#xff0c;包括直播、短视频、网络视频、实时互动和视频监控等领域。掌握FM和音视频技术可以获得更好的薪酬。 学习建议音视频学习建议与实战应用 音视频处理机制的学习&#xff0c;需要勤加练习&#xff0c;带…...

数据通信与网络(三)

物理层概述&#xff1a; 物理层是网络体系结构中的最低层 它既不是指连接计算机的具体物理设备&#xff0c;也不是指负责信号传输的具体物理介质&#xff0c; 而是指在连接开放系统的物理媒体上为上一层(指数据链路层)提供传送比特流的一个物理连接。 物理层的主要功能——为…...

盲盒小程序模式?有什么功能?

近些年&#xff0c;盲盒成为了热门的休闲娱乐消费方式&#xff0c;深深吸引着消费者的目光&#xff0c;行业更是持续上升发展&#xff0c;成为了具有巨大发展前景的行业之一。 随着市场的逐步发展&#xff0c;盲盒也开始向线上模式发展&#xff0c;以互联网为媒介&#xff0c;…...

【MySQL进阶之路 | 高级篇】InnoDB搜索引擎行格式

1. COMPACT行格式 COMPACT行格式是MySQL5.1的默认行格式.其结构示意图如下. 大体可以分为两部分. 记录的额外信息.这里面有包括变长字段长度列表&#xff0c;NULL值列表和记录头信息.记录的真实数据. (1).变长字段长度列表 MySQL支持一些变长的数据类型.比如VARCHAR(m), VA…...

大数据面试-Scala

谈谈scala的闭包、柯里化、高阶函数 如果一个函数&#xff0c;访问到了它的外部&#xff08;局部&#xff09;变量的值&#xff0c;那么这个函数和他所处的环境&#xff0c;称为闭包。 闭包在函数式编程中是一个重要的概念&#xff0c;广泛用于高阶函数、柯里化等技术中。 函数…...

76.最小覆盖子串

给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 “” 。 注意&#xff1a; 对于 t 中重复字符&#xff0c;我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。 如果 s 中存…...

深度学习算法informer(时序预测)(三)(Encoder)

一、EncoderLayer架构如图&#xff08;不改变输入形状&#xff09; 二、ConvLayer架构如图&#xff08;输入形状中特征维度减半&#xff09; 三、Encoder整体 包括三部分 1. 多层EncoderLayer 2. 多层ConvLayer 3. 层归一化 代码如下 class AttentionLayer(nn.Module):de…...

HTML和CSS基础(一)

前言 HTML&#xff08;HyperText Markup Language&#xff09;是一种用于创建网页的标准标记语言。它由各种标签组成&#xff0c;这些标签定义了网页的结构和内容。HTML的早期形式诞生于1989年&#xff0c;由CERN的物理学家Tim Berners-Lee发明&#xff0c;最初用于在科学家之…...

低代码平台教你两步把SQL直接转换为RESTful API

文章目录 前言一、简介1. 项目亮点2. 技术栈3. 核心功能4. 数据库设计二、搭建教程1. 目录结构2. 下载2.1 下载2.2 上传2.3 解压3. 配置3.1 创建并切换数据库3.2 执行sql文件3.3 修改配置文件4. 启动/停止4.1 启动4.2 停止4.3 重启5. 浏览器访问三、配置教程1. 数据源配置1.1 创…...

JavaWeb阶段学习知识点(二)

登录校验和JWT令牌实现 JWT使用方式 创建一个springboot项目,pom.xml引入jwt依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency><!-- 针对jdk17或…...

5分钟解锁WeMod专业版:开源工具让你的游戏修改体验全面升级

5分钟解锁WeMod专业版&#xff1a;开源工具让你的游戏修改体验全面升级 【免费下载链接】Wemod-Patcher WeMod patcher allows you to get some WeMod Pro features absolutely free 项目地址: https://gitcode.com/gh_mirrors/we/Wemod-Patcher 还在为WeMod专业版的订阅…...

网安学习路线!最详细没有之一!看了这么多分享网安学习路线的一个详细的都没有!

零基础小白&#xff0c;到就业&#xff01;入门到入土的网安学习路线&#xff01; 在各大平台搜的网安学习路线都太粗略了。。。。看不下去了&#xff01; 我把自己报班的系统学习路线&#xff0c;整理拿出来跟大家分享了&#xff01;点击下图&#xff0c;福利&#xff01; …...

ViGEmBus终极指南:Windows游戏控制器虚拟化完整解决方案

ViGEmBus终极指南&#xff1a;Windows游戏控制器虚拟化完整解决方案 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus Windows游戏控制器虚拟化是许多PC游戏玩…...

清单来了:2026最新AI论文网站测评与推荐

2026年真正好用的AI论文网站&#xff0c;核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…...

XL6008直流升压电路设计与应用指南

基于XL6008的直流升压电路设计指南 1. 项目概述 1.1 应用背景 便携式电子设备对电源系统提出了特殊要求&#xff1a;在保持轻量化的同时&#xff0c;需要提供稳定的工作电压。由于单节锂电池的标称电压为3.7V&#xff08;满电4.2V&#xff09;&#xff0c;而许多电子元件需要…...

vLLM实战:手把手教你用LLMEngine构建高效推理服务(附代码解析)

vLLM实战&#xff1a;从零构建高性能大模型推理服务的工程指南 当大语言模型从实验室走向生产环境时&#xff0c;如何实现高吞吐、低延迟的推理服务成为工程化落地的关键挑战。vLLM作为当前最受关注的开源推理框架之一&#xff0c;其核心组件LLMEngine的设计理念值得每一位AI工…...

02.Linux常用文件操作命令

1.mkdir 目录名:创建目录 mkdir 目录名 mkdir -p a/b/c 创建多级目录 2.touch 创建空文件 touch 文件名 touch 文件名 文件名 创建多个文件 3.文件写入内容 echo写入 覆盖写入 echo 文件内容 >文件名 追加写入&#xff08;日志必用&#xff09; echo 文件内容 >…...

低延迟多场景的Windows音频捕获解决方案:win-capture-audio实战指南

低延迟多场景的Windows音频捕获解决方案&#xff1a;win-capture-audio实战指南 【免费下载链接】win-capture-audio An OBS plugin that allows capture of independant application audio streams on Windows, in a similar fashion to OBSs game capture and Discords appli…...

2026微软SDE LeetCode高频题:208道,按频度排序,含备考建议

2026微软SDE LeetCode高频题&#xff1a;208道&#xff0c;按频度排序&#xff0c;含备考建议 微软SDE的LeetCode面试题&#xff0c;第一名不是反转链表&#xff0c;不是LRU缓存&#xff0c;而是—— 215. 数组中的第K个最大元素&#xff0c;出现14次。 我整理了基于真实面经…...

OpenClaw成本优化方案:nanobot轻量镜像替代高价API实测

OpenClaw成本优化方案&#xff1a;nanobot轻量镜像替代高价API实测 1. 为什么需要关注OpenClaw的成本问题 去年冬天&#xff0c;当我第一次用OpenClaw完成邮件自动回复的完整流程时&#xff0c;既兴奋又心疼。兴奋的是它真的能像人类一样读取邮件、分析内容、生成回复&#x…...