Pikachu靶场——XSS漏洞(Cross-Site Scripting)

news2025/1/12 8:46:30

文章目录

  • 1. XSS(Cross-Site Scripting)
    • 1.1 反射型XSS(get)
    • 1.2 反射型XSS(post)
    • 1.3 存储型XSS
    • 1.4 DOM型XSS
    • 1.5 DOM型XSS-X
    • 1.6 XSS盲打
    • 1.7 XSS之过滤
    • 1.8 XSS之htmlspecialcharss
    • 1.9 XSS之href输出
    • 1.10 XSS之JS输出
    • 1.11 XSS 漏洞防御

1. XSS(Cross-Site Scripting)

跨站点脚本(Cross Site Scripting,XSS)是指客户端代码注入攻击,攻击者可以在合法网站或Web应用程序中执行恶意脚本。当wb应用程序在其生成的输出中使用未经验证或未编码的用户输入时,就会发生XSS。

跨站脚本攻击,XSS(Cross Site Scripting)。由于与CSS(Cascading Style Sheet)重名,所以就更名为XSS。

XSS作为OWASP TOP10(2017)内容之一,主要使用JavaScript来完成恶意攻击的行为,JS可以非常灵活的操作HTML、CSS、浏览器,这就使得XSS攻击“想象”空间非常大。也就是说,JS强大的灵活性和功能,为XSS攻击提供了非常广阔的攻击面。

1.1 反射型XSS(get)

发现在输入代码的时候,输入到一定长度无法进行输入了。

image-20230815215055165

可以修改页面源代码。将最大值修改为100

image-20230815215211048

<script>alert('芜湖')</script>

最后弹框如下:

image-20230815215340239

1.2 反射型XSS(post)

输入密码进行登录

image-20230815215842467

<script>alert(document.cookie)</script>

输入代码发现没有长度限制,弹框如下

image-20230815215942274

GET方式中, 攻击代码是直接暴露在URL中的

image-20230815220304734

POST方式参数内容不会出现在URL中

image-20230815220557479

image-20230815220636564

1.3 存储型XSS

存储型XSS:持久化,存储型XSS漏洞是指攻击者将恶意脚本代码存储在目标网站的数据库中,通常在用户提交的表单数据中注入恶意代码。当其他用户浏览到包含恶意代码的页面时,脚本代码会被执行,导致攻击者能够获取用户的敏感信息或执行恶意操作。

发现是一个留言板,直接输入攻击代码

<script>alert(document.cookie)</script>

image-20230815220856827

1.4 DOM型XSS

XSS(DOM)是一种基于DOM树的一种代码注入攻击方式,可以是反射型的,也可以是存储型的,所以它一直被划分第三种XSS。与前两种XSS相比,它最大的特点就是不与后台服务器交互,只是通过浏览器的DOM树解析产生。除了js,flash等脚本语言也有可能存在XSS漏洞。

<script>alert(document.cookie)</script>

image-20230815221533134

查看页面源代码

image-20230815221803617

输入的发现攻击代码被传入了一个a标签中。那么这里可以尝试将a标签进行闭合。

修改攻击代码

'> <img src="" οnerrοr=alert('芜湖')>

image-20230815222818892

查看网页源代码

image-20230815222854702

1.5 DOM型XSS-X

先直接点击按钮查看显示内容,弹出了一个链接“有些费尽心机想要忘记的事情,后来真的就忘掉了”,点击该连接又弹出了一句话“就让往事都随风,都随风吧”

image-20230816193921307

查看源代码

image-20230816194508196

发现点击后跳转到了a标签,使得闭合a标签,输出我们的攻击代码

'> <img src="" οnerrοr=alert('芜湖')>

image-20230816195051108

页面显示内容

image-20230816195134866

1.6 XSS盲打

<script>alert('芜湖')</script>

输入攻击代码后发现没有任何弹框,查看源代码。

image-20230816200827445

发现该表单是post提交方式,现在我们查看提示。提示说需要登录后台。

image-20230816201035808

输入路径登录后台查看,发现我们之前的攻击代码生效了。

http://127.0.0.1/pikachu/vul/xss/xssblind/admin.php?id=8

image-20230816201056089

倘若注入xss,是无法得知是否xss被执行,但是管理员在后台查看时,当注入了xss代码,同时管理员又访问了后台,且后台把我们的内容输出,那么后台管理员可能遭受到XSS攻击。这也是称为XSS盲打的原因。

1.7 XSS之过滤

输入攻击代码

<script>alert('芜湖')</script>

发现没有弹窗

image-20230816202815039

猜测这里过滤了一些标签

image-20230816203815414

发现在输入**<script>标签后<script被过滤了,只剩下了>**。

那么这里可以使用多种方式进行绕过

大小写绕过

<sCript>alert('wuhu')</scRIpt>
<SCRIPT>alert('wuhu')</SCRIPT>

image-20230816204029466

使用非<script>的其他标签

<img src=1 onerror='alert("wuhu")'>

image-20230816204132693

1.8 XSS之htmlspecialcharss

输入攻击代码

<script>alert('芜湖')</script>

发现还是没有弹框

image-20230816205026412

htmlspecialchars()的作用就是把预定义的字符转换为了HTML实体。预定义的字符如下:

& 成为 &amp
" 成为 &quot
' 成为 &#039
< 成为 &lt
> 成为 &gt

htmlspecialchars()函数默认是不对单引号进行转义的,要想连单引号一起转义,需要给函数传入参数ENT_QUOTES。

ENT_COMPAT:默认,仅编码双引号
ENT_QUOTES:编码双引号和单引号
ENT_NOQUOTES:不编码任何引号

查看源代码,单引号没有被过滤掉。

image-20230816223745194

image-20230816210141462

构造攻击代码

' οnclick='alert(99)'

点击链接' onclick='alert(99)'后弹框如下:

image-20230816214349248

1.9 XSS之href输出

还是先输入<script>alert('芜湖')</script>一个尝试,发现没有弹框。

image-20230816214841863

image-20230816221106040

查看网页源代码,发现左右尖括号,双引号,单引号都被html编码了,这样的话,闭合标签或者闭合属性都行不通了。

image-20230816223139951

发现href 属性的值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScript 代码段。

所以这里可以输入:

javascript:alert(document.cookie)

解析:

  • javascript: 这是一个伪协议,表示接下来的内容是 JavaScript 代码,可以在当前页面的上下文中执行。
  • alert(): 这是一个 JavaScript 函数,用于在浏览器中显示一个警告框,其中显示指定的消息。
  • document.cookie: 这是一个 JavaScript 表达式,用于获取当前页面的 Cookie 值。Cookie 是一种用于在客户端和服务器之间存储数据的机制,它可以用于标识和跟踪用户会话状态。

image-20230816223317754

1.10 XSS之JS输出

还是先输入一段攻击代码,查看页面响应

<script>alert('芜湖')</script>

发现页面没有响应,查看页面源代码。发现输入的攻击代码被发送到了最外面的<script>标签中了,并且没有被编码。

image-20230817201304281

那么现在可以闭合当前语句,然后再生成我们的攻击代码,这样代码就变成了$ms = '';alert('芜湖');//';

';alert('芜湖');//

image-20230817201819926

1.11 XSS 漏洞防御

参看我写的另一篇博客:跨站脚本攻击(XSS)

  • 黑白名单策略
  • 输入过滤
  • 输出编码

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

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

相关文章

计算机毕设 招聘网站爬取与大数据分析可视化 - python 分析 可视化 flask

文章目录 0 前言1 课题背景2 实现效果3 Flask框架4 Echarts5 爬虫6 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自…

SpringTask ----定时任务框架 ----苍穹外卖day10

目录 SpringTask 需求分析 快速入门 使用步骤 ​编辑业务开发 SpringTask 定时任务场景特化的框架 需求分析 快速入门 使用cron表达式来使用该框架 使用步骤 添加注解 自定义定时任务类 重点在于以下cron表达式的书写,精确表达触发的间隔 业务开发 主task方法 time使用(-…

No168.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

JUC第十七讲:JUC集合: ConcurrentLinkedQueue详解

JUC第十七讲&#xff1a;JUC集合: ConcurrentLinkedQueue详解 本文是JUC第十七讲&#xff1a;JUC集合 - ConcurrentLinkedQueue详解。ConcurerntLinkedQueue一个基于链接节点的无界线程安全队列。此队列按照 FIFO(先进先出)原则对元素进行排序。队列的头部是在队列中时间最长的…

【Java】微服务——Feign远程调用

目录 1.Feign替代RestTemplate1&#xff09;引入依赖2&#xff09;添加注解3&#xff09;编写Feign的客户端4&#xff09;测试5&#xff09;总结 2.自定义配置2.1.配置文件方式2.2.Java代码方式 3.Feign使用优化4.最佳实践4.1.继承方式4.2.抽取方式4.3.实现基于抽取的最佳实践1…

老鼠走迷宫java ---递归

题目 有一个八行七列的数组&#xff0c;红色的格子代表墙&#xff0c;白色格子代表可以走的格子&#xff1b; 假定老鼠起点在map【1】【1】&#xff0c;设计算法帮老鼠找到到达终点map【6】【5】的路线。 思路 1.findWay方法就是专门来找出迷宫的路径 2.如果找到&#xff…

阿里测试师用UI自动化测试实现元素定位!

随着IT行业的发展&#xff0c;产品愈渐复杂&#xff0c;web端业务及流程更加繁琐&#xff0c;目前UI测试仅是针对单一页面&#xff0c;操作量大。为了满足多页面功能及流程的需求及节省工时&#xff0c;设计了这款UI 自动化测试程序。旨在提供接口&#xff0c;集成到蜗牛自动化…

第3章 Micro SaaS 的挑战

目录 1.对系统和平台的依赖 2.个人动力/责任随你而止 3.无尽的客户支持 4.模仿者 最后的想法 尽管 Micro SaaS 有很多好处&#xff0c;但这种商业模式并非没有其独特的缺点&#xff0c;您在开始时需要注意这些缺点。 以下是您需要了解的 Micro SaaS 的一些主要挑战&#…

BeanFactory和FactoryBean,ApplicationContext的关系

他们的区别比较容易理解&#xff0c;从字面意思就能区分开来&#xff0c;BeanFactory是Bean工厂&#xff0c;而FactoryBean是工厂BeanBeanFactory&#xff0c;Spring中工厂的顶层规范&#xff0c;他是IOC容器的核心接口&#xff0c;它的职责包括&#xff1a;实例化、定位、配置…

AIGC AI绘画 Midjourney 参数大全详细列表

AIGC ChatGPT 职场案例60集&#xff0c; Power BI 商业智能 68集&#xff0c; 数据库Mysql8.0 54集 数据库Oracle21C 142集&#xff0c; Office&#xff0c; Python &#xff0c;ETL Excel 2021 实操&#xff0c;函数&#xff0c;图表&#xff0c;大屏可视化 案例实战 http:…

最新AI创作程序源码ChatGPT系统网站源码/Ai绘画系统/支持OpenAI GPT全模型+国内AI全模型/详细搭建部署教程

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统&#xff0c;支持OpenAI GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Chat…

【audio】alsa pcm音频路径

文章目录 AML方案音频路径分析dump alsa pcm各个音频路径的原始音频流数据 AML方案音频路径分析 一个Audio Patch用来表示一个或多个source端到一个或多个sink端。这个是从代码的注释翻译来的&#xff0c;大家可以把它比作大坝&#xff0c;可以有好几个入水口和出水口&#xf…

回调函数兼函数指针与仿函数(谓词形式概论)

目录 前言 一、回调函数 1&#xff09;背景引入 2&#xff09;函数指针 3&#xff09;回调函数 4&#xff09;应用实例 &#xff08;1&#xff09;qsort() 库函数介绍 &#xff08;2&#xff09;void* 指针 &#xff08;3&#xff09;qsort() 调用实现 <> 函数指…

一种用于车联网安全数据共享的联邦双向连接宽度学习方案

A Federated Bidirectional Connection Broad Learning Scheme for Secure Data Sharing in Internet of Vehicles 由于IoV是一个多用户移动场景&#xff0c;数据共享的可靠性和效率需要进一步提高。联邦学习允许服务器在不从客户端获取私人数据的情况下交换参数&#xff0c;从…

细粒度特征提取和定位用于目标检测:PPCNN

1、简介 近年来&#xff0c;深度卷积神经网络在计算机视觉上取得了优异的性能。深度卷积神经网络以精确地分类目标信息而闻名&#xff0c;并采用了简单的卷积体系结构来降低图层的复杂性。基于深度卷积神经网络概念设计的VGG网络。VGGNet在对大规模图像进行分类方面取得了巨大…

1.1 基础热图绘制

1 写在前面 最近在作图&#xff0c;一直在寻找《小杜的生信笔记》前期发表的代码。众所周知&#xff0c;小杜的教程基本都是平时自己用到的绘图教程&#xff0c;也是自己一个分享和总结。 自己在后期作图的时候&#xff0c;也会去寻找自己前期的教程作为基础&#xff0c;进行…

Spring Cloud学习笔记【分布式请求链路跟踪-Sleuth】

文章目录 Spring Cloud Sleuth概述概述主要功能&#xff1a;Sleuth中的术语和相关概念官网 zipkin配置下载运行zipkin下载zipkin运行 demo配置服务提供者 lf-userpom.xmlapplication.ymlUserController 服务调用者 lf-authpom.xmlapplication.ymlAuthController 测试 Spring Cl…

mysql面试题24:如何写sql,能够有效的使用到复合索引?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:如何写sql,能够有效的使用到复合索引? 为了能够有效地使用到复合索引,需要考虑以下几点: 索引列顺序:复合索引的列顺序非常重要,应该将最频…

深入浅出,SpringBoot整合Quartz实现定时任务与Redis健康检测(二)

前言 在上一篇深入浅出&#xff0c;SpringBoot整合Quartz实现定时任务与Redis健康检测&#xff08;一&#xff09;_往事如烟隔多年的博客-CSDN博客 文章中对SpringBoot整合Quartz做了初步的介绍以及提供了一个基本的使用例子&#xff0c;因为实际各自的需求任务不尽相同因此并…

redis分布式秒杀锁

-- 获取锁标识&#xff0c;是否与当前线程一致&#xff1f; if(redis.call(get, KEYS[1]) ARGV[1]) then-- 一致&#xff0c;删除return redis.call(del, KEYS[1]) end -- 不一致&#xff0c;直接返回 return 0package com.platform.lock;public interface ILock {/*** 获取锁…