十四、pikachu之XSS

文章目录

  • 1、XSS概述
  • 2、实战
    • 2.1 反射型XSS(get)
    • 2.2 反射型XSS(POST型)
    • 2.3 存储型XSS
    • 2.4 DOM型XSS
    • 2.5 DOM型XSS-X
    • 2.6 XSS之盲打
    • 2.7 XSS之过滤
    • 2.8 XSS之htmlspecialchars
    • 2.9 XSS之href输出
    • 2.10 XSS之JS输出

1、XSS概述

  Cross-Site Scripting简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:

  • 反射性XSS;
  • 存储型XSS;
  • DOM型XSS;

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

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

  • 输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
  • 输出转义:根据输出点的位置对输出到前端的内容进行适当转义。

2、实战

2.1 反射型XSS(get)

(1)j既然已经提示这题属于反射型XSS,直接上payload:<script>alert("XSS")</script>;

在这里插入图片描述
  发现:payload被截断了。查看前端源码:

在这里插入图片描述
  输入框有长度限制,那么我们直接Burp进行抓包,修改数据包试试:

  payload:http://192.168.92.1:32769/vul/xss/xss_reflected_get.php?message=%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%22%58%53%53%22%29%3c%2f%73%63%72%69%70%74%3e&submit=submit

在这里插入图片描述

2.2 反射型XSS(POST型)

(1)首先使用用户名和密码进行登录;
在这里插入图片描述
(2)这一题跟前一题差不多,直接在输入框中上payload:<script>alert(document.cookie)</script>

在这里插入图片描述

2.3 存储型XSS

(1)首先在留言板中输入一些特殊的字符串,发现并没有过滤:
在这里插入图片描述
(2)跟前面一样,直接上payload:<script>alert(document.cookie)<script>
在这里插入图片描述

  与反射型XSS不同的是,存储型XSS会使每访问一次页面,页面都会弹框。

2.4 DOM型XSS

  DOM型XSS和反射型XSS、存储型XSS的区别在于:DOM型不用将恶意脚本传输到服务器在返回客户端,而后两种恶意脚本都会经过服务器端然后返回给客户端。

  对于浏览器来说,DOM文档就是一份XML文档,通过JavaScript就可以轻松的访问DOM文档。下面举例一个DOM将HTML代码转化成树状结构:

<html><head><meta charset="gbk" /><title> TEST </title></head><body><p>The is p.<p><h1>Product:</h1><ul><li>Apple</li><li>Pear</li><li>Corn</li></ul></body>
</html>

转化成模型如下图:
在这里插入图片描述

  通过这种简单的树状结构,就能把元素之间的关系简单明晰的表示出来,方便客户端的JavaScript脚本通过DOM动态的检查和修改页面内容,不依赖服务端的数据。

(1)在搜索框中随便输入12,页面回显“what do you see?”。
在这里插入图片描述
(2)查看页面源代码:
在这里插入图片描述
  大意:点击“click me!”按钮,会执行domxss()函数,变量str的值为输入框中的内容,然后将str的值与<a href='‘>what do you see?</a>进行拼接。

  我们只需要闭合a标签,就可以使得payload执行。构造payload:'><img src="#" onmouseover="alert('xss')">

  注意,不能再script标签下再嵌套script标签,故换一个payload,当鼠标移动到图片的的地方,就会弹窗。

在这里插入图片描述

2.5 DOM型XSS-X

查看源码;
在这里插入图片描述
  关于window.location.search就是URL中?后面的字母,具体如下:
在这里插入图片描述
  然后经过切分、替换,将str的值与<a href='‘>就让往事都随风,都随风吧</a>进行拼接。构造payload:'><img src="#" onmouseover="alert('xss')">

  需要点击有些费尽心机想要忘记的事情,后来真的就忘掉了之后,在将鼠标移动到图片处,才会弹框。
在这里插入图片描述

在这里插入图片描述

2.6 XSS之盲打

  xss盲打是一种攻击场景,我们输出的payload不会在前端进行输出,当管理员查看我们的留言时就会遭到xss攻击。

在这里插入图片描述

  输入常规的payload:<script>alert(/xss/)</script>,登录后台地址去看看(/xssblind/admin_login.php)。

在这里插入图片描述
在这里插入图片描述

2.7 XSS之过滤

  绕过过滤的方法:

  • 前端限制绕过,直接抓包重放,或者修改html前端代码
  • 大小写,比如:<SCRIPT>aLeRT(111)</sCRIpt>
  • 拼凑:<scri<script>pt>alert(111)</scri</script> pt>
  • 使用注释进行干扰:<scri<!--test-->pt>alert(111)</sc <!--test--> ript>
  • 使用其他的标签,绕过script标签,如:<img src="#" onmouseover="alert('xss')">

这里使用payload:<img src="#" onmouseover="alert('xss')">
在这里插入图片描述

2.8 XSS之htmlspecialchars

  htmlspecialchars()函数是php常用方法,是把预定义的字符转换为HTML实体。其语法:htmlspecialchars(string,flags,character-set,double_encode)

  常见的预定义的字符有:

  • &(和号)成为&amp
  • "(双引号)成为&quot
  • (单引号)成为&#039
  • <(小于)成为&lt
  • >(大于)成为&gt

  输入" ' > < 之后,发现除了单引号没被转化外,其他都被转化为HTML实体了。
在这里插入图片描述
  故,构造payload:#' onclick='alert(/xss/),前一个引号闭合href属性,第二个引号闭合onclick属性。
在这里插入图片描述
在这里插入图片描述

2.9 XSS之href输出

  在输入框中输入<script>alert('xss')</script>,打开源代码,发现均被HTML实体化了,闭合标签和闭合属性的方法行不通了。
在这里插入图片描述
  关于<a> 标签的href属性:

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

  总而言之,在a标签的href属性里面,可以使用javascript协议来执行js,可以尝试使用伪协议绕过。构造payload:javascript:alert(/xss/)

注意:alert中字符串需要用"、' or /包含,数字不用。
在这里插入图片描述

2.10 XSS之JS输出

  输入<script>alert('xss')</script>,发现不行,打开源代码,可以看到payload被带到script标签里去了。
在这里插入图片描述

  构造payload:';alert(1);//';闭合掉当前的语句,然后插入新语句,然后再用//注释掉老语句遗留下来的';

在这里插入图片描述

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

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

相关文章

当图像宽高为奇数时,如何计算 I420 格式的uv分量大小

背景 I420 中 yuv 数据存放在3个 planes 中。 网上一般说 I420 数据大小为 widthheight1.5 但是当 width 和 height 是奇数时&#xff0c;这个计算公式会有问题。 I420 中 u 和 v 的宽高分别为 y 的一半。 但是当不能整除时&#xff0c;是如何取整呢&#xff1f;向上还是向下&…

2. 使用IDEA创建Spring Boot Hello项目并管理依赖——Maven入门指南

前言&#xff1a;本文将介绍如何使用IDEA创建一个Spring Boot Hello项目&#xff0c;并通过Maven来管理项目的依赖。我们从项目的创建到代码的编写&#xff0c;再到项目的构建和运行&#xff0c;一步步演示了整个过程。 &#x1f680; 作者简介&#xff1a;作为某云服务提供商的…

有什么react进阶的项目推荐的?

前言 整理了一些react相关的项目&#xff0c;可以选择自己需要的练习&#xff0c;希望对你有帮助~ 1.ant-design Star&#xff1a;87.1k 阿里开源的react项目&#xff0c;作为一个UI库&#xff0c;省去重复造轮子的时间 仓库地址&#xff1a;https://github.com/ant-design/…

《JVM修仙之路》初入JVM世界

《JVM修仙之路》初入JVM世界 博主目前正在学习JVM的相关知识&#xff0c;想以一种不同的方式记录下&#xff0c;娱乐一下 清晨&#xff0c;你睁开双眼&#xff0c;看到刺眼的阳光&#xff0c;你第一反应就是完了完了&#xff0c;又要迟到了。刚准备起床穿衣的你突然意识到不对&…

畜牧兽医虚拟仿真|病禽解剖VR模拟操作演练系统

在生物学课程中&#xff0c;动物解剖是一个重要的组成部分&#xff0c;它能够帮助学生了解动物的生理结构、功能和生活习性&#xff0c;从而更好地认识和保护自然界的生物多样性。然而&#xff0c;传统的动物解剖教学方法往往局限于课堂教学和实验室实践&#xff0c;学生很难真…

系统架构设计高级技能 · 面向服务架构设计理论与实践

点击进入系列文章目录 系统架构设计高级技能 面向服务架构设计理论与实践 一、SOA的相关概念1.1SOA的定义1.2 业务流程与业务流程执行语言 二、SOA的发展史三、SOA与微服务的区别三、SOA的参考架构四、SOA的主要协议规范五、SOA的设计标准要求六、SOA的作用与设计原则七、SOA的…

信息化发展2

信息系统生命周期 1 、软件的生命周期通常包括&#xff1a;可行性分析与项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等阶段。 2 、信息系统的生命周期可以简化为&#xff1a;系统规划&#xff08;可行性分析与项目开发计划&#xff09;&#xff0c;系统分析…

心法利器[97] | 判断问题是否真的需要大模型来解决

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会&#xff0c;与大家一起成长。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。 2022年新一版的文章合集已经发布&#xff0c;累计已经60w字了&#xff0c;获取方式看这里&…

DevOps中的持续测试优势和工具

持续测试 DevOps中的持续测试是一种软件测试类型&#xff0c;它涉及在软件开发生命周期的每个阶段测试软件。持续测试的目标是通过早期测试和经常测试来评估持续交付过程的每一步的软件质量。 DevOps中的持续测试流程涉及开发人员、DevOps、QA和操作系统等利益相关者。 持续…

dockerfile镜像及Harbor私有仓库搭建的应用

目录 搭建私有仓库harbordockerfile构建镜像1&#xff0c;先创建一个目录2&#xff0c;编写dockerfile3&#xff0c;构建4&#xff0c; 验证镜像5&#xff0c;标记镜像6&#xff0c;上传镜像 搭建私有仓库harbor 首先安装容器编排工具&#xff1a;docker compose 我使用的是离…

函数式编程-Stream流学习第二节-中间操作

1 Stream流概述 java8使用的是函数式编程模式,如同它的名字一样&#xff0c;它可以用来对集合或者数组进行链状流式操作&#xff0c;让我们更方便的对集合或者数组进行操作。 2 案例准备工作 我们首先创建2个类一个作家类&#xff0c;一个图书类 package com.stream.model;…

邂逅JavaScript

前言&#xff1a;前端三大核心 前端开发最主要需要掌握的是三个知识点&#xff1a;HTML、CSS、JavaScript 一、认识编程语言 1.计算机语言 前面我们已经学习了HTML和CSS很多相关的知识: 在之前我们提到过, HTML是一种标记语言, CSS也是一种样式语言; 他们本身都是属于计算…

CNN 02(CNN原理)

一、卷积神经网络(CNN)原理 1.1 卷积神经网络的组成 定义 卷积神经网络由一个或多个卷积层、池化层以及全连接层等组成。与其他深度学习结构相比&#xff0c;卷积神经网络在图像等方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他浅层或深度神经…

LLM-chatgpt训练过程

流程简介 主要包含模型预训练和指令微调两个阶段 模型预训练&#xff1a;搜集海量的文本数据&#xff0c;无监督的训练自回归decoder&#xff1b; O T P ( O t < T ) O_TP(O_{t<T}) OT​P(Ot<T​)&#xff0c;损失函数CE loss指令微调&#xff1a;在输入文本中加入…

在ubuntu上部署label-studio

1. 安装label-studio 由于服务器的默认python3版本太低&#xff0c;尝试了很多方法&#xff0c;没有升级。因此采用annaconda方式安装label-studio. a.安装anaconda: 参照如下链接&#xff0c;安装anaconda。 Ubuntu安装Anaconda详细步骤&#xff08;Ubuntu22.04.1&#xff…

Hyperf 如何做到用两个端口 9501/9502 都能连接 Websocket 服务以及多 Worker 协作实现聊天室功能

为何 Hyperf 能够在两个端口上监听 WebSocket 连接&#xff1f; 源码角度来看&#xff0c;在配置了多个 Servers 时&#xff0c;实际上&#xff0c;只启动了一个 Server 注&#xff1a;我之前接触的代码都是启动一个服务绑定一个端口&#xff0c;之前也看过 swoole 扩展的文档…

【el-tree】树形组件图标的自定义

饿了么树形组件的图标自定义 默认样式: 可以看到el-tree组件左侧自带展开与收起图标,咱们可以把它隐藏:: .groupList {::v-deep .el-tree-node { .el-icon-caret-right {display: none;} } } 我的全部代码 <div class"groupList"><el…

[NLP]深入理解 Megatron-LM

一. 导读 NVIDIA Megatron-LM 是一个基于 PyTorch 的分布式训练框架&#xff0c;用来训练基于Transformer的大型语言模型。Megatron-LM 综合应用了数据并行&#xff08;Data Parallelism&#xff09;&#xff0c;张量并行&#xff08;Tensor Parallelism&#xff09;和流水线并…

DML语句的用法(MySQL)

文章目录 前言一、DML介绍二、DML语句操作1、给指定字段添加数据2、给全部字段添加数据3、批量添加数据4、修改数据5、删除数据 总结 前言 本文主要介绍SQL语句中DML语句的用法。 在实验开始之前我们先创建一下所要使用表&#xff0c;如下图所示&#xff1a; 一、DML介绍 DM…

matlab使用教程(22)—非线性优化函数的设置

1.设置优化选项 可以使用由 optimset 函数创建的 options 结构体来指定优化参数。然后&#xff0c;可以将 options 作为输入传递给优化函数&#xff0c;例如&#xff0c;通过使用以下语法调用 fminbnd x fminbnd(fun,x1,x2,options) 或使用以下语法调用 fminsearch x f…