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

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

文章目录

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>

成功弹窗

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • uni-app便携式蓝牙打印机esc指令改成vue3中使用
  • AI5-PPOCRLabel训练
  • RTL8852bs 初始化流程
  • PLM选型指南:如何选择适合自己企业的系统?
  • 解析capl文件生成XML Test Module对应的xml工具
  • Python面试题:结合Python技术,讲解如何使用OpenCV进行图像处理与计算机视觉任务
  • 平安养老险陕西分公司:反保险欺诈案例(二)——打击保险欺诈,守护金融安全
  • 跨境电商做独立站你需要考虑的几个问题
  • 在线考试系统产品源码功能架构与技术解析
  • IDEA报错无效的目标发行版:17
  • c#中的正则表达式和日期的使用(超全)
  • spring的三级缓存与源码分析--解决循环依赖
  • 内衣洗衣机怎么选?五款超耐用内衣洗衣机推荐!
  • 金牌挑战——奥运知识大比拼
  • 【C语言】程序环境,预处理,编译,汇编,链接详细介绍,其中预处理阶段重点讲解
  • 【知识碎片】第三方登录弹窗效果
  • Asm.js的简单介绍
  • docker-consul
  • Java 最常见的 200+ 面试题:面试必备
  • laravel5.5 视图共享数据
  • markdown编辑器简评
  • Median of Two Sorted Arrays
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • React-redux的原理以及使用
  • Service Worker
  • Theano - 导数
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 基于Android乐音识别(2)
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 前端存储 - localStorage
  • 深度解析利用ES6进行Promise封装总结
  • 深入 Nginx 之配置篇
  • 数据结构java版之冒泡排序及优化
  • 做一名精致的JavaScripter 01:JavaScript简介
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​插件化DPI在商用WIFI中的价值
  • #162 (Div. 2)
  • (C11) 泛型表达式
  • (LeetCode) T14. Longest Common Prefix
  • (SERIES12)DM性能优化
  • (八)Flink Join 连接
  • (补)B+树一些思想
  • (待修改)PyG安装步骤
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .mysql secret在哪_MySQL如何使用索引
  • .naturalWidth 和naturalHeight属性,
  • .net Application的目录
  • .net web项目 调用webService
  • .net/c# memcached 获取所有缓存键(keys)
  • .NET之C#编程:懒汉模式的终结,单例模式的正确打开方式
  • .pub是什么文件_Rust 模块和文件 - 「译」