DVWA-DOM型XSS全等级绕过方法

DOM型XSS全等级绕过
  • 前言
  • 一、LOW级别
  • 二、Medium级别
      • 图片插入语句法
  • 三、High级别
      • 字符 # 绕过服务端过滤
  • 四、Impossible级别

前言

    DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式。DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。在网站页面中有许多页面的元素,当页面到达浏览器时浏览器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑从而修改页面的元素。也就是说,客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。

一、LOW级别

打开dvwa,并将等级设置为low
在这里插入图片描述
我们查看源代码

<?php
# No protections, anything goes
?>

        从源代码可以看出,这里low级别的代码没有任何的保护性措施!
    观察主页面,可以看到页面的功能是让我们选择默认的语言,但是这里又没有对default参数没有进行任何的过滤。
    在这里插入图片描述
        因此,我们在这里构造XSS代码,在default参数后面写入脚本,构造访问连接:

    http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default=<script>alert('Oh_No')</script>
    

      点击之后,我们的 script脚本成功被执行了!
      在这里插入图片描述
      查看网页的源代码即可看出,因为我们的脚本插入到代码中,所以执行了
      在这里插入图片描述
          同样的,我们可以修改语句,使其弹窗可以获取cookie
      在这里插入图片描述

      二、Medium级别

      先查看源代码

      <?php
      // Is there any input?
      if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {$default = $_GET['default'];# Do not allow script tagsif (stripos ($default, "<script") !== false) {header ("location: ?default=English");exit;}
      }
      ?> 
      

            从Medium源代码中可以看到它对default参数的值进行了检查,用了stripos()函数对default参数的值进行了检测是否有<scipt字符,如果有的话,就将default=English。

        注意:stripos() 函数是不区分大小写的。具体函数用法请参考:
        PHP stripos() 函数.

        图片插入语句法

            既然这里过滤了<script,那么我们可以用图片插入语句法:

        <img src =1 onerror = alert('dom')>
        

              当我们访问URL:

          http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default=<img src =1 onerror = alert('dom')>
          

                此时没有出现任何的变化,界面没有反应。这个时候查看网页的源代码:
            在这里插入图片描述
                可以看到我们输入的脚本语句被插入进了value值中,没有插入到option标签的值中,所以我们语句当中的<img>标签就没有起到作用,因此不会弹窗。
            我们改进我们的语句,尝试将前面的标签闭合

            http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default=</select><img src =1 onerror = alert('dom')>
            

                  页面成功出现弹窗:
              在这里插入图片描述
                  查看一下网页的源代码:
              在这里插入图片描述
                  我们还可以直接在English值的后面直接进行拼接:

              http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default=English</select><img src =1 onerror = alert('dom')>
              

                    页面也能直接出现弹窗:

                在这里插入图片描述
                    查看网页源代码:
                在这里插入图片描述

                三、High级别

                先查看源代码

                <?php
                // Is there any input?
                if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {# White list the allowable languagesswitch ($_GET['default']) {case "French":case "English":case "German":case "Spanish":# okbreak;default:header ("location: ?default=English");exit;}
                }
                ?> 
                

                      分析High级别源代码,这里先if判断default的值是否为空,如果不为空就用switch语句进行匹配,很明显这相当于设置了白名单,只允许传 default值为EnglishFrenchGermanSpanish 其中一个。

                  字符 # 绕过服务端过滤

                      url中有一个字符为#,该字符后的数据不会发送到服务器端,#后面的内容是对浏览器的操作,不会发送到http请求当中去,从而绕过服务端过滤。
                      因此可以这样构造连接:

                  http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default=English#<script>alert('high!!!')</script>
                  

                        点击提交刷新页面后,出现弹窗:
                    在这里插入图片描述

                    四、Impossible级别

                    查看源代码

                    <?php
                    # Don't need to do anything, protction handled on the client side
                    ?> 
                    

                          意思是不需要做任何事,保护在客户端处理

                          尝试修改English为:
                      <script>alert(‘hello’)</script>
                      在这里插入图片描述
                          从上图可以看出框内的值是我们输入的参数的经过URL编码后的数据。
                      查看网页源代码:
                      在这里插入图片描述
                          并没有对我们输入的内容进行URL解码,所以我们输入的任何内容都是经过URL编码,然后直接赋值。因此不存在XSS漏洞。

                          我们可以对比LOW级别的网页源代码:
                      在这里插入图片描述

                          本站所有文章均为原创,欢迎转载,请注明文章出处: https://blog.csdn.net/weixin_43847838/article/details/111940420.。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

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

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

                      相关文章

                      人工智能与自闭症的研究现状及未来趋势

                      人工智能与自闭症的研究现状及未来趋势 摘要&#xff1a;本研究旨在通过文献计量学方法&#xff0c;分析人工智能领域内关于自闭症研究的现状与未来趋势。研究基于中国知网&#xff08;CNKI&#xff09;、万方数据库&#xff08;WanFang&#xff09;、维普数据库&#xff08;V…

                      zero自动化框架搭建---Git安装详解

                      一、Git下载 下载安装包 官网下载 下载的地址就是官网即可&#xff1a;Git - Downloads 进来直接选择windows的安装包下载 选择安装位置 双击安装包安装&#xff0c;选择安装地址后点击next 选择安装的组件&#xff0c;默认即可 也可按照需要自行选择 Windows Explorer i…

                      【精调】LLaMA-Factory 快速开始1: Meta-Llama-3.1-8B-Instruct

                      llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml llamafactory-cli chat examples/inference/llama3_lora_sft.yaml llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml模型下载 git clone https://www.modelscope.cn/LLM-Research/Meta-Lla…

                      服务器创建conda环境并安装使用jupyter

                      1.创建conda环境 conda create --name myenv python3.8 conda activate myenv其中 myenv 是您想要创建的环境名称&#xff0c;可以根据需要替换为其他名称。2.安装juypter conda install jupyter3.启动juypter jupyter notebook复制链接到浏览器打开 4.设置jupyter使用的 …

                      树莓派 4B:AI 物联网完整部署方案

                      引言 人工智能&#xff08;AI&#xff09;和物联网&#xff08;IoT&#xff09;正在快速融合&#xff0c;使得智能监控、工业自动化、智能家居等场景变得更加智能化。树莓派 4B 作为一款低功耗、高性价比的嵌入式计算平台&#xff0c;可以运行 AI 模型&#xff0c;并结合 IoT …

                      JVM类文件结构深度解析:跨平台基石与字节码探秘

                      目录 一、类文件&#xff1a;Java生态的通用语言 1.1 字节码的桥梁作用 1.2 类文件核心优势 二、类文件二进制结构剖析 2.1 整体结构布局 2.2 魔数与版本控制 2.3 常量池&#xff1a;类文件的资源仓库 2.4 访问标志位解析 三、核心数据结构详解 3.1 方法表结构 3.2 …

                      亲测可用,IDEA中使用满血版DeepSeek R1!支持深度思考!免费!免配置!

                      作者&#xff1a;程序员 Hollis 之前介绍过在IDEA中使用DeepSeek的方案&#xff0c;但是很多人表示还是用的不够爽&#xff0c;比如用CodeChat的方案&#xff0c;只支持V3版本&#xff0c;不支持带推理的R1。想要配置R1的话有特别的麻烦。 那么&#xff0c;今天&#xff0c;给…

                      Java语法-集合

                      Java语法 Day19 晨考 Collections工具类 /* Collection 集合工具类 此类中的方法全部为静态方法 此类种提供了用于操作集合的各种方法swap(List<?> list,int i,int j) 交换指定位置的集合中的元素 sort(List<T> list,Comparator<? super T> c) 根…

                      网络缓存加速技术解析:从诞生到演进

                      目录 早期探索&#xff1a;浏览器缓存的出现 网络架构升级&#xff1a;代理服务器缓存的应用 全球化加速&#xff1a;CDN 缓存的崛起深入了解CDNhttps://blog.csdn.net/m0_68472908/article/details/145744082?spm1001.2014.3001.5501 技术革新&#xff1a;HTTP/2 协议带来…

                      深度学习的力量:精准肿瘤检测从此不再遥远

                      目录 引言 一、医学图像分析的挑战与深度学习的优势 1.1 医学图像分析的挑战 1.2 深度学习的优势 二、肿瘤检测的深度学习模型设计 2.1 卷积神经网络&#xff08;CNN&#xff09;的基本原理 2.2 网络架构设计 2.3 模型训练 三、肿瘤检测中的挑战与解决方案 3.1 数据不…

                      蓝桥杯学习大纲

                      &#xff08;致酷德与热爱算法、编程的小伙伴们&#xff09; 在查阅了相当多的资料后&#xff0c;发现没有那篇博客、文章很符合我们备战蓝桥杯的学习路径。所以&#xff0c;干脆自己整理一篇&#xff0c;欢迎大家补充&#xff01; 一、蓝桥必备高频考点 我们以此为重点学习…

                      利用AFE+MCU构建电池管理系统(BMS)

                      前言 实际BMS项目中&#xff0c;可能会综合考虑成本、可拓展、通信交互等&#xff0c;用AFE&#xff08;模拟前端&#xff09;MCU&#xff08;微控制器&#xff09;实现BMS&#xff08;电池管理系统&#xff09;。 希望看到这篇博客的朋友能指出错误或提供改进建议。 有纰漏…

                      RT-Thread+STM32L475VET6实现呼吸灯

                      文章目录 前言一、板载资源资源说明二、具体步骤1.新建rt_thread项目2. 打开PWM设备驱动3. 在Stm32CubeMX配置定时器3.1打开Stm32CubeMX3.2 使用外部高速时钟&#xff0c;并修改时钟树3.3打开定时器1&#xff0c;并配置通道一为PWM输出模式(定时器根据自己需求调整)3.4 打开串口…

                      新手小白如何挖掘cnvd通用漏洞之存储xss漏洞(利用xss钓鱼)

                      视频教程和更多福利在我主页简介或专栏里 &#xff08;不懂都可以来问我 专栏找我哦&#xff09; 如果对你有帮助你可以来专栏找我&#xff0c;我可以无偿分享给你对你更有帮助的一些经验和资料哦 目录&#xff1a; 一、XSS的三种类型&#xff1a; 二、XSS攻击的危害&#x…

                      详解TCP协议多种机制

                      1.TCP报文格式 为了方便后续各位深入理解TCP机制&#xff0c;我们有必要先了解一下TCP的报文格式&#xff0c;首先我们先来看如下图 第四行那六个单词分别有不同的作用&#xff0c;初始为0&#xff0c;无作用&#xff0c;置为1即代表不同作用&#xff0c;具体后面会介绍。 我…

                      Python蓝桥杯刷题-小数第n位详解

                      题目描述 我们知道&#xff0c;整数做除法时&#xff0c;有时得到有限小数&#xff0c;有时得到无限循环小数。 如果我们把有限小数的末尾加上无限多个 0&#xff0c;它们就有了统一的形式。 本题的任务是&#xff1a;在上面的约定下&#xff0c;求整数除法小数点后的第 n 位开…

                      android,flutter 混合开发,pigeon通信,传参

                      文章目录 app效果native和flutter通信的基础知识1. 编解码器 一致性和完整性&#xff0c;安全性&#xff0c;性能优化2. android代码3. dart代码 1. 创建flutter_module2.修改 Android 项目的 settings.gradle&#xff0c;添加 Flutter module3. 在 Android app 的 build.gradl…

                      Redis 客户端C++使用

                      安装 redis-plus-plus 在C中使用Redis&#xff0c;通常需要借助第三方库来实现与Redis服务器的交互。目前比较流行的库有 redis-plus-plus 和 hiredis。redis-plus-plus 是基于 hiredis 实现的&#xff0c;hiredis 是⼀个 C 语⾔实现的 redis 客⼾端&#xff0c;因此需要先安装…

                      Python的那些事第二十二篇:基于 Python 的 Django 框架在 Web 开发中的应用研究

                      基于 Python 的 Django 框架在 Web 开发中的应用研究 摘要 Django 是一个基于 Python 的高级 Web 框架,以其开发效率高、安全性和可扩展性强等特点被广泛应用于现代 Web 开发。本文首先介绍了 Django 的基本架构和核心特性,然后通过一个实际的 Web 开发项目案例,展示了 Dj…

                      亲测Windows部署Ollama+WebUI可视化

                      一. Ollama下载 登录Ollama官网(Ollama)点击Download进行下载 如果下载很慢可用以下地址下载&#xff1a; https://github.com/ollama/ollama/releases/download/v0.5.7/OllamaSetup.exe 在DeepSeek官网上&#xff0c;你可以直接点击【model】 到达这个界面之后&#xff0c;…