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

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

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

相关文章

前端代码打包教程

一、 首先解压并进入源码包中&#xff0c;源码文件是下载的完整版安装包的 view/ 目录下,平台后台是 admin.zip ,商户后台是 mer.zip , H5/公众号/小程序是 uniapp.zip ,2.0级以上版本还有客服的源码包&#xff1b; 二、 打包&#xff0c;移动端和后台的打包方式不同 平台后台…

PyTorch(一)模型训练过程

PyTorch&#xff08;一&#xff09;模型训练过程 #c 总结 实践总结 该实践从「数据处理」开始到最后利用训练好的「模型」预测&#xff0c;感受到了整个模型的训练过程。其中也有部分知识点&#xff0c;例如定义神经网络&#xff0c;只是初步的模仿&#xff0c;有一个比较浅的…

力扣456.132模式

力扣456.132模式 单调栈 维护单调递减的栈用k维护‘2’&#xff0c;每次出栈就更新**&#xff08;保证栈中元素始终大于k&#xff09;**当出现nums[i] < k时 说明存在‘1’又因为栈中存在‘3’因此就存在132模式序列 class Solution {public:bool find132pattern(vector&…

C语言C99标准、C11标准新增加的特性

C语言标准 C语言从其诞生至今&#xff0c;经历了多个标准的更新&#xff0c;主要标准包括&#xff1a; C89/C90 (ANSI C / ISO/IEC 9899:1990)&#xff1a;这是C语言的第一个官方标准&#xff0c;由ANSI于1989年发布&#xff0c;后被ISO采纳为国际标准&#xff0c;发布于1990年…

echarts+vue2实战(一)

目录 一、项目准备 二、(横向分页)柱状图 2.1、动态刷新 2.2、UI调整 2.3、分辨率适配 三、(竖向平移)柱状图 3.1、平移动画 3.2、不同数值显示不同颜色 四、(下拉切换)折线图 4.1、切换图表和分辨率适配 4.2、UI调整 五、(三级分类)饼图 5.1、数据切换 六、圆环…

使用Tkinter创建带查找功能的文本编辑器

使用Tkinter创建带查找功能的文本编辑器 介绍效果代码解析创建主窗口添加菜单栏实现文件操作实现查找 完整代码 介绍 在这篇博客中&#xff0c;我将分享如何使用Python的Tkinter库创建一个带有查找功能的简单文本编辑器。 效果 代码解析 创建主窗口 import tkinter as tkcl…

Offset Explorer 连接SASL PLAIN鉴权的Kafka

1、填写Kafka信息 2、配置鉴权信息 Security 选择 SASL PLAINTEXT JAAS Config 配置账号密码 org.apache.kafka.common.security.plain.PlainLoginModule required username"账号"password"密码";

[Vulnhub] Troll FTP匿名登录+定时任务权限提升

信息收集 IP AddressPorts Opening192.168.8.104TCP:21,22,80 $ nmap -sC -sV 192.168.8.104 -p- --min-rate 1000 Nmap scan report for 192.168.8.104 (192.168.8.104) Host is up (0.0042s latency). Not shown: 65532 closed tcp ports (conn-refused) PORT STATE SER…

openh264 宏块级码率控制源码分析

openh264 宏块级码率控制函数关系 宏块级核心函数分析 WelsRcMbInitGom函数 功能&#xff1a;openh264 码率控制框架中宏块级码率控制函数&#xff0c;根据是否启用GOM QP来决定如何设置宏块的QP值&#xff0c;以控制编码的质量和比特率。原理过程&#xff1a; 函数参数&…

“打造智能售货机系统,基于ruoyi微服务版本开源项目“

目录 # 开篇 售货机术语 1. 表设计说明 2. 页面展示 2.1 区域管理页面 2.2 合作商管理页面 2.3 点位管理页面 3. 建表资源 3.1 创建表的 SQL 语句&#xff08;包含字段备注&#xff09; 1. Region 表 2. Node 表 3. Partner 表 4. 创建 tb_vending_machine 表的 S…

学习java第一百零六天

Spring的后置处理器 BeanPostProcessor&#xff1a;Bean的后置处理器&#xff0c;主要在bean初始化前后工作。 InstantiationAwareBeanPostProcessor&#xff1a;继承于BeanPostProcessor&#xff0c;主要在实例化bean前后工作&#xff1b; AOP创建代理对象就是通过该接口实现…

用LangChain调用Ollama的时候一个小问题

说来让人无语&#xff0c;简单记录一下。安装好Ollama后&#xff0c;我们通常通过访问http://127.0.0.1:11434来测试其是否正常&#xff0c;通常会出来“Ollama is running”&#xff0c;然后我习惯性地从Chrome把地址拷贝到VS Code&#xff0c; oembed OllamaEmbeddings(bas…

【启明智显产品介绍】Model3C工业级HMI芯片详解专题(一)芯片性能

【启明智显产品介绍】工业级HMI芯片Model3C详解&#xff08;一&#xff09;芯片性能 Model3C 是一款基于 RISC-V 的高性能、国产自主、工业级高清显示与智能控制 MCU&#xff0c;配置平头哥E907&#xff0c;主频400MHz&#xff0c;强大的 2D 图形加速处理器、PNG/JPEG 解码引擎…

【Conda】修改 Conda 默认的虚拟环境位置

文章目录 问题描述分析与解决查看默认安装位置修改 .condarc 文件修改权限 参考资料 问题描述 Conda 的虚拟环境默认安装在 C 盘。时间久了&#xff0c;C 盘上的内存会被大量占用&#xff0c;影响电脑性能。于是想到修改虚拟环境的默认存放位置&#xff0c;改到自定义的位置。…

找不到d3dx9_43.dll无法继续执行代码的几种解决方法

在工作或生活使用电脑都会遇到丢失dll文件应用无法启动的情况&#xff0c;比如你安装完一款你最喜欢的游戏在启动的时候提示系统缺少d3dx9_39.dll、d3dx9_40.dll、d3dx9_41.dll、d3dx9_42.dll、d3dx9_43.dll、xinput1_3.dll 文件而无法正常游戏&#xff0c;或你在工作的时候安装…

分享HTML显示2D/3D时间

效果截图 实现代码 <!DOCTYPE html> <head> <title>three.jscannon.js Web 3D</title><meta charset"utf-8"><meta name"viewport" content"widthdevice-width,initial-scale1,maximum-scale1"><meta n…

图神经网络学习笔记

文章目录 一、图神经网络应用领域分析二、图基本模块定义三、邻接矩阵的定义四、GNN中常见任务五、消息传递计算方法六、多层GCN的作用七、GCN基本模型概述八、图卷积的基本计算方法九、邻接的矩阵的变换十、GCN变换原理解读 本笔记参考自b站up主小巴只爱学习的图神经网络教程 …

【Android面试八股文】你能说一说View绘制流程与自定义View注意点吗?

文章目录 一、自定义View的构造函数以及各参数的用法二、自定义View的几种方式三、自定义View的绘制流程四、自定义View需要注意的一些点五、举个例子一、自定义View的构造函数以及各参数的用法 在Android中,自定义View通常需要提供多个构造函数,以适应不同的使用场景。主要…

创建OpenWRT虚拟机

环境&#xff1a;Ubuntu 2204&#xff0c;VM VirtualBox 7.0.18 安装必备软件包&#xff1a; sudo apt update sudo apt install subversion automake make cmake uuid-dev gcc vim build-essential clang flex bison g gawk gcc-multilib g-multilib gettext git libncurses…

C语言中操作符详解(一)

众所周知&#xff0c;在我们的C语言中有着各式各样的操作符&#xff0c;并且在此之前呢&#xff0c;我们已经认识并运用了许许多多的操作符&#xff0c;都是诸君的老朋友了昂 操作符作为我们使用C语言的一个非常非常非常重要的工具&#xff0c;诸君一定要加以重视&#xff0c;…