【pikachu靶场】跨站脚本攻击详细教程Cross-Site Scripting(xss)

news2024/12/26 22:59:16

文章目录

XSS(跨站脚本)概述

 1.反射型xss(get)

2.反射型xss(post)

3.存储型XSS

4.DOM型xss

5.DOM型XSS-X

6.xss之盲打

7.xss之过滤

8.xss之htmlspecialchars

9.xss之href输出

10.xss之js输出


XSS(跨站脚本)概述

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

    1.反射性XSS;

    2.存储型XSS;

    3.DOM型XSS;

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

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

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

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

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

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

 1.反射型xss(get)

构造payload

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

 我们发现输入完('xss')就不能输入了,明显超过长度限制的

我们此处F12,选择这个输入框 ,将最大长度改为100,我们就可以正常输入内容了 

2.反射型xss(post)

我们发现一个登录框,我们在暴力破解那一关,获取到了管理员账号和密码,即

账号:admin

密码:123456

如果没做暴力破解我们也可以点一下提示看一下

输入账号密码后来到输入框,依旧输入我们的payload

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

可能有人会疑惑,这一关和上一关不是一样吗,不是这样的哦

3.存储型XSS

我们先看一下post和get请求的区别

数据传输方式:

GET请求:数据通过URL中的查询参数附加在URL后面,以明文形式传输数据。

POST请求:数据作为请求的正文发送,而不是通过URL传递。

数据长度限制:

GET请求:有长度限制,受浏览器和服务器对URL长度的限制。

POST请求:没有固定的长度限制,适合传输大量数据。

数据安全性:

GET请求:数据以明文形式暴露在URL中,容易被窃听和拦截。

POST请求:数据在请求正文中传输,并可以使用加密协议(如HTTPS)进行传输,相对更安全。

数据缓存:

GET请求:可以被浏览器缓存,可以提高性能。

POST请求:通常不被浏览器缓存。

 仔细观察就会发现,get型的那一关,我们输入的payload在url中有显示,而post则没有显示

payload

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

提交时,会有xss弹窗

并且当我们切换页面,再切换回来时,也会有xss弹窗,这说明我们的数据被存储起来了,也就是存储型的xss

4.DOM型xss

首先我们先看下什么是DOM,简单来说就是

DOM是一种用于表示和操作HTML、XML等文档结构的编程接口,通过它可以使用代码来访问、修改和操作Web页面的内容和结构。

回到题目,我们先随便输入一串内容,F12检查一下,顺找我们输入的语句

找到我们输入的内容,我们就要想办法构造payload了,首先我们需要先闭合我们的语句,然后构造一个onclick

这里我本来以为是双引号闭合,构造出来不对查看源代码发现,外面还有一个单引号

所以我们的payload应该是

' οnclick=alert('xss')>

 闭合后语句为

<a href='' οnclick=alert(‘xss’)>'>what do you see?</a>

5.DOM型XSS-X

 payload和上一关一样

' οnclick=alert('xss')>

和上一关唯一的区别就是,这一关是从url中获取我们提交的参数,体现的题目上就是我们多点了一下

 因为dom型都是前端操作,比较鸡肋,这里就不多说了

6.xss之盲打

这一关是什么意思呢,盲打也就是我们在前端并不能看到我们的代码,无法判断xss是否成功,只有在后台才能看到

我们构造payload

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

根据提示登录后台地址

成功弹窗俩次,发现俩个框都存在xss漏洞。

7.xss之过滤

首先试下我们之前的payload

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

我们提交后发现只有'>'了

发现<script>标签被过滤,采用其他方法绕过

构造payload

<a href="" οnclick="alert('xss')">

成功绕过弹窗

8.xss之htmlspecialchars

试下我们之前的payload

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

没有效果,查看源码

尝试使用a标签

Payload

' οnclick='alert("xss")

 闭合后的语句为

<a href='' οnclick='alert("xss")'>

 成功弹窗

9.xss之href输出

还是先试下我们之前的payload

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

没有效果,查看源码

尝试使用a标签

' οnclick='alert("xss")

依旧没效果

检查源代码发现左右尖括号和单双引号都被html编码了

使用jsp代码

Payload

javascript:alert(1)

成功弹窗

10.xss之js输出

依旧试下之前的payload

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

没有反应,我们查看源代码发现,<script>标签对应关系有问题,那么我们只需要闭合掉第一个<script>就可以了

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

成功弹窗

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

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

相关文章

并发编程相关面试题-Synchronized

重量级锁实现的原理 1、synchronized是JVM内置锁&#xff0c;基于Monitor机制实现&#xff0c;依赖底层操作系统的互斥锁Mutex&#xff08;互斥量&#xff09;&#xff0c;它是一个重量级锁、 2、synchronized同步方法是通过方法中的access_flags中设置ACC_SYNCHRONIZED标志来…

换根dp学习总结3

我也不想搞这么多&#xff0c;但是这东西真的太难了&#xff0c;因为我还是个蒟蒻。算了蒟蒻继续写这次的总结了 寻找全图最远路径问题——Computer ——题目来源于hdu2196 题意&#xff1a;题目就是说会输入多组数据&#xff0c;每组数据给你一个n&#xff0c;表示结点的总数…

怎么评价程序员40岁了竟然还在撸代码?

怎么评价外卖员40岁了竟然还在送外卖&#xff1f; 怎么评价滴滴司机40岁了竟然还在跑滴滴&#xff1f; 怎么评价老师40岁了竟然还在教书&#xff1f;难道程序员的本职工作不是敲代码吗&#xff1f;无论你是管理层还是螺丝钉&#xff0c;工业环境下怎么可能一行代码都不敲呢&…

RocketMQ Dashboard安装

RocketMQ Dashboard 是一个基于 Web 的管理工具&#xff0c;用于监控和管理 RocketMQ 集群。它提供了一个用户友好的界面&#xff0c;使管理员能够轻松地查看和操作 RocketMQ 系统中的各种组件和状态。 主要功能包括&#xff1a; 集群管理: 监控和管理 NameServer 和 Broker …

web框架:django基础(二)

文章目录 django基础&#xff08;二&#xff09;1.回顾2.今日概要3.路由系统3.1 传统的路由3.2 正则表达式路由3.3 路由分发小结 3.4 name3.5 namespaceapp_namenamespace的多层嵌套 3.4 最后的 / 如何解决&#xff1f;3.5 当前匹配对象小结 4.视图4.1 文件or文件夹4.2 相对和绝…

《QDebug 2024年7月》

一、Qt Widgets 问题交流 1. 二、Qt Quick 问题交流 1.Qt5 QML 在某些环境下&#xff0c;有些字体中文渲染有问题 如 Qt5.15 在部分安卓机上复制的复只有半截宽&#xff0c;半径的径字也不对&#xff0c;等等 用 Qt6.7 测试则正常&#xff0c;或者换成其他如小米、阿里巴巴…

Golang的TLS版本配置参数-排坑经历

一、背景 公司有个黑盒监控拨测组件&#xff0c;类似可以通过各种协议如HTTP、TCP、ICMP等等针对目标主机、目标IP、目标站点进行定时拨测&#xff0c;通过返回的状态码等信息来推断&#xff0c;目标业务系统/主机、站点是否存在异常&#xff0c;健康情况如何。 最近在配置一个…

一文搞懂机器学习!2024.6月最新!(附代码实现)

前言 机器学习入门精品文章 随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器学习&#xff0c;本文介绍机器学习的基础内容。 机器学习是人工智能的一个分支&#xff0c;它使计算机系统能够从数据中学习并做出决策或预测&am…

Jangow-1.0.1靶机漏洞复现(未完成)

首先&#xff0c;这个靶机只能使用VirtualBox打开&#xff0c;靶机下载地址为 https://download.vulnhub.com/jangow/jangow-01-1.0.1.ova 虚拟机软件下载地址为 Download_Old_Builds – Oracle VM VirtualBox 开启靶机后访问ip进入如下页面&#xff0c;点击site进入到一个…

【C++】哈希容器

unordered系列关联式容器 在之前的博文中介绍过关联式容器中的map与set&#xff0c;同map与set一样&#xff0c;unordered_set与unordered_set也是关联式容器。 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;查询效率可以达到logN&#xff1b;在…

详解HTTP代理与SOCKS代理之间的差异

代理服务器在网络安全和隐私保护方面&#xff0c;发挥着十分重要的作用。其中&#xff0c;HTTP代理和SOCKS代理是两种常见的代理方式&#xff0c;它们在原理、功能和应用场景上有着明显的差异。本文将为大家深入分析这两种代理之间的区别&#xff0c;帮助大家更好地选择适合自己…

Linux中如何添加磁盘分区

在Linux中添加分区通常涉及到几个步骤&#xff0c;包括识别磁盘、创建分区、格式化分区&#xff0c;以及挂载或将其用作特定的文件系统类型&#xff08;如LVM、RAID等&#xff09;。以下是一个基本的步骤指南&#xff0c;假设你正在使用命令行界面&#xff08;CLI&#xff09;和…

《技术人求职之道》之简历优化篇(下):技能与项目亮点,如何让你的简历熠熠生辉

摘要 本文将深入探讨技术求职者在撰写简历时的关键要素,包括专业技能的表达和项目经验的描述。文章首先提出专业技能描述的六条基本原则,包括统一技术词汇、标点符号一致性、技术关键字的驼峰命名法、技术分类、技术热度和掌握度排序以及慎用“精通”。接着,指导读者如何美…

FFmpeg Windows安装教程

一. 下载ffmpeg 进入Download FFmpeg网址&#xff0c;点击下载windows版ffmpeg。 下载第一个essentials版本就行。 二. 环境配置 上面源码解压后如下 将bin添加到系统环境变量 验证安装是否成功&#xff0c;输入ffmpeg –version&#xff0c;显示版本即为安装成功。

必应Bing国内广告开户、投放流程和避坑攻略!

必应Bing作为微软旗下的搜索引擎&#xff0c;不仅在全球范围内拥有庞大的用户群体&#xff0c;在中国也有着稳定的市场份额。为了让企业更好地利用必应Bing在国内的广告资源&#xff0c;云衔科技提供了全面的广告开户及代运营服务&#xff0c;帮助企业轻松驾驭数字化营销之路。…

c语言指针3

文章目录 前言一、数组名的理解1.数组名正常情况是首元素的地址2.数组名不是首元素地址的情况2. 1 sizeof(arr)中的数组名2. 2 &arr中的arr代表整个数组 3. 结论 二、使用指针访问数组1.使用指针输入输出数组中的数 三、一维数组传参的本质四、冒泡排序五、二级指针5.1 二级…

betterZip免费版怎么下载 如何安装下载和激活BetterZip教程 BetterZip注册码密钥

BetterZip是一款功能齐全且对用户友好的Mac系统解压缩工具&#xff0c;它具备压缩文件及文件夹&#xff0c;解压压缩包&#xff0c;在线预览和编辑压缩包内文件等一系列功能。此外&#xff0c;BetterZip还有简洁的界面和操作&#xff0c;可以通过拖拽或右键菜单来压缩或解压文件…

深度体验AI计算平台:超算互联网模型服务与加速卡

目录 前言 AI算力性能体验 1、注册/登录 2、购买服务 3、运行的过程记录 4、运行效果 5、运行结果反馈 6、体验总结 番外篇&#xff1a;主流推荐 1、算法模型推荐 2、开源项目推荐 3、数据集推荐 结束语 前言 在人工智能的浪潮中&#xff0c;AI计算平台已成为研究…

系统移植(十一)根文件系统(未整理)

文章目录 一、根文件系统中各个目录文件功能解析&#xff1a;二、对busybox进行配置和编译&#xff08;一&#xff09;执行make help命令获取make的帮助信息&#xff08;二&#xff09;对busybox源码进行配置&#xff0c;配置交叉编译器&#xff08;三&#xff09;执行make men…

kill 命令详解

kill命令其实比较让人难以理解的点在于信号这块&#xff0c;开发中kill -9经常用&#xff0c;但却很少去深入了解其他信号参数的具体作用&#xff0c;本文主要是就信号这块做一个解释。 实验代码 public static void main(String[] args) {Runtime.getRuntime().addShutdownHoo…