XSS注入——DOM型XSS

news2024/9/28 5:23:28

 DOM型xss

XSS根据恶意脚本的传递方式可以分为3种,分别为反射型、存储型、DOM型,前面两种恶意脚本都会经过服务器端然后返回给客户端,相对DOM型来说比较好检测与防御,而DOM型不用将恶意脚本传输到服务器在返回客户端,这就是DOM型和反射、存储型的区别

DOM型xss可以在前端通过js渲染来完成数据的交互,达到插入数据造成xss脚本攻击,且不经过服务器,所以即使抓包无无法抓取到这里的流量。

它是基于DoM文档对象的一种漏洞,并且DOM型XSS是基于JS上的,并不需要与服务器进行交互。

DOM型ⅩSS攻击中,服务器在返回HTML文档的时候,是不包含恶意脚本的;恶意脚本是在其执行了非恶意脚本后,被注入到文档里的。通过JS脚本对对文档对象进行编辑,从而修改页面的元素。也就是说,客户端的脚本程序可以DOM动态修改页面的内容,从客户端获取DOM中的数据并在本地执行。由于DOM是在客户端修改节点的,所以基于DOM型的XSS漏洞不需要与服务器端交互,它只发生在客户端处理数据的阶段。

这里推荐一个大佬的博客 是关于dom文档的相关知识

DOM(文档对象模型)学习_dom文档_漫山谷的博客-CSDN博客

接下来利用皮卡丘靶场做一下这三种xss注入

皮卡丘靶场解决问题

我是用phpstudy来进行搭建的 新建了一个数据库

 

这里依据我出现的问题来进行解答

1.靶场未安装

进来就是这个界面  做题时也会出现  Table 'pikachu.users' doesn't exist

可以访问ip/pikachu/install.php 进行初始化安装

2. xss后台无法登录 分两种情况

1.Unknown database 'pkxss' in D:\phpstudy_pro\WWW\pikachu\pkxss\index.php on line 10

出现这种类似的是因为你的pikachu\pkxss\inc里的config.inc.php中的DBNAME没有修改

比如我的DBNAME是pikachu 那就需要改成pikachu

 2.Access denied for user '123'@'' to database 'pkxss' in D:\phpstudy_pro\WWW\pikachu\pkxss\index.php on line 10

出现这种类似的事因为你的前端数据库连接但是可能后端的没连接

pikachu的前端后端都需要连同一个数据库,但是用的两个配置文件,两个配置文件都需要修改参数。只要都修改了就可以了

3.xss后台登录失败

也是因为没有进行初始化的原因

进入install.php 进行初始化就可以了

 1.反射型(get)

尝试普通注入 <script>alert()</script> 但是发现字符长度被限制了

f12源代码 找到修改长度的地方(要是正常找很难找到,所以可以点击输入框,右击鼠标点击检查

找到了 修改长度到100

 接着输入<script>alert('11')</script>

完成

2.反射型xss(post)

先看提示----为了能够让你练习xss获取cookie,我们还是登陆一下,账号admin/123456

登陆进去之后,输入 <script>alert(document.cookie)</script> (这里用document.cookie的原因是因为靶场想让我们练习xss获取cookie  而通过 document.cookie 可以获取与设置 cookie 。)

 成功注入

3.存储型xss

 看到无用提示

 发现这个没什么不同, 依然输入<script>alert(document.cookie)</script> 就可以

4.DOM型xss

 先看提示 说让我们先搞懂dom是什么

输入 <script>alert(111)</script>  试试

发现不行

看看源代码

 

 

 function domxss(){
                        var str = document.getElementById("text").value;
                        document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
                    }
                    //试试:'><img src="#" οnmοuseοver="alert('xss')">
                    //试试:' οnclick="alert('xss')">,闭合掉就行
               

 

 

找到关键部分  js代码执行后 会将a标签和字符串连接起来 然后输出一个 what do you see?

利用了DOM将字符串进行了拼接并把值给a标签的href

所以我们可以利用已知条件构建payload效果为弹窗 弹窗内容任意 他也给了paylaod

//试试:'><img src="#" οnmοuseοver="alert('xss')">
                    //试试:' οnclick="alert('xss')">,闭合掉就行 

 

发现这两个都可以 成功实现注入 之后的靶场内容会另起一个来写

 

 

 

 

 

 

 

 

 

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

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

相关文章

如何优化Nginx服务进程(详细教程)

目录 一、了解Nginx服务配置内容 ① 外框架 ② 内框架 ③ 三个主模块 二、Nginx服务进程 访问信息的组成 Web服务的监听配置 LNMP架构 三、Nginx优化 隐藏版本号 可以查询指定地址的服务信息 更改配置文件内容 检查语法错误 重启服务 再次查看版本号是否隐藏 自…

【qiankun】前端微服务踩坑记录-长期更新

目录 前言 1.Cannot GET /cooperation/board 场景&#xff1a; 分析 解决 2.Invalid options in vue.config.js:"css.requireModuleExtension" is not allowed 原因 解决 3.less版本升级导致除法写法未转换 原因 解决 4.主子应用样式隔离 场景 解决 5…

Java进阶必读书单及博客

java基础 Java核心技术 卷I:开发基础&#xff08;原书第12版&#xff09; Java核心技术 卷II:高级特性&#xff08;原书第12版&#xff09; JVM 《深入理解Java虚拟机&#xff08;第3版&#xff09;》 并发 《Java并发编程实战》 《Java并发编程的艺术》 数据库 《MySQL技术…

win下安装Nginx

安装Nginx 前言 本文演示win11下安装Nginx-1.24.0。本文旨在记录安装流程以及梳理安装配置过程中的一些容易出错的地方。 目录 文章目录 前言目录下载Nginx安装包配置环境变量配置Nginx设置报错日志路径设置Nginx的启动端口号 启动Nginx 下载Nginx安装包 前往Nginx官方下载…

FineReport学习1

聚合报表是指将多个子报表数据进行集中汇总、分析和呈现的报表&#xff0c;通常用于展示公司的整体数据情况。聚合报表可以帮助管理人员和决策者更全面、准确地了解公司在不同维度上的业务情况&#xff0c;便于对公司业务进行分析和决策。 决策报表则是指根据决策需求构建的针…

性能测试——银行核心业务系统性能测试

目录 前言&#xff1a; 测试内容 测试方法 注意事项 总结&#xff1a; 前言&#xff1a; 本文讨论的是基于字符终端型的银行核心业务系统。银行核心业务系统由于其复杂的业务流程&#xff0c;以及特殊的终端字符形式&#xff0c;与一般的B/S结构、C/S结构系统有较大的差异&am…

Vue3新特性全预览

目录 自定义Hook函数 介绍 示例 toRef和toRefs 介绍 代码示例 shallowReactive和shallowRef(不常用只做了解) readonly与shallowReadonly(不常用只做了解) toRaw与markRaw(不太常用只做了解) provide与inject 介绍 代码示例 ​编辑 响应式数据的判断 Composition Api的…

QML Canvas 元素(渐变和阴影)

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 经过前面的 Canvas 学习,我们可以很容易地使用 strokeStyle 和 fillStyle 来设置图形的边框色和填充色,例如:“green”、“black” 等。其实除了使用纯色之外,我们还可以使用一些渐变色,如果你想让图形…

基于matlab使用卡尔曼滤波器进行对象跟踪(附源码)

一、前言 此示例演示如何使用对象和函数来跟踪对象。 二、介绍 卡尔曼滤波器有许多用途&#xff0c;包括控制、导航、计算机视觉和时间序列计量经济学方面的应用。此示例说明了如何使用卡尔曼滤波器跟踪对象&#xff0c;并重点介绍三个重要功能&#xff1a; 预测物体的未来位置…

基于条件风险价值CVaR的微网动态定价与调度策略(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

人工智能(pytorch)搭建模型14-pytorch搭建Siamese Network模型(孪生网络),实现模型的训练与预测

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能(pytorch)搭建模型14-pytorch搭建Siamese Network模型(孪生网络)&#xff0c;实现模型的训练与预测。孪生网络是一种用于度量学习&#xff08;Metric Learning&#xff09;和比较学习&#xff08;Compariso…

教学实训模块升级,助力应用型数据科学人才培养|ModelWhale 版本更新

初夏梅雨季&#xff0c;ModelWhale 迎来新一轮版本更新&#xff0c;多角度优化各领域用户的使用体验。 本次更新中&#xff0c;ModelWhale 主要进行了以下功能迭代&#xff1a; • 优化 课程作业布置&#xff08;团队版✓ &#xff09; • 新增 课程作业关联至课件&#xff…

MySQL的服务层和存储引擎层

1. 服务层&#xff08;Server Layer&#xff09;&#xff1a; 服务层是MySQL的顶层组件&#xff0c;负责处理客户端与MySQL服务器之间的交互。它提供了一组API和协议&#xff0c;使应用程序能够连接到MySQL服务器&#xff0c;并发送查询、事务管理、用户权限控制等请求。服务层…

6-js基础-1

JavaScript 基础 - 1 了解变量、数据类型、运算符等基础概念&#xff0c;能够实现数据类型的转换&#xff0c;结合四则运算体会如何编程。 JavaScript介绍变量常量数据类型运算符实战案例 重点单词&#xff1a; js介绍 能说出JavaScript 是什么? 怎么写? 能写出JavaScript 输…

【C++详解】——红黑树

目录 红黑树的概念 红黑树的性质 红黑树节点的定义 红黑树的结构 红黑树的插入操作 情况一 情况二 情况三 红黑树的验证 红黑树的查找 红黑树与AVL树的比较 红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示…

基于SpringBoot的在线拍卖系统【附ppt和万字文档(Lun文)和搭建文档】

主要功能 主要功能 前台登录&#xff1a; ①首页&#xff1a;轮播图、竞拍公告、拍卖商品展示 ②拍卖商品&#xff1a;分类&#xff1a;手机、数码、电器等&#xff0c;可以点击商品竞拍 ③竞拍公告&#xff1a;可以查看竞拍的信息 ④留言反馈&#xff1a;用户可以提交留言 ⑤…

如何办理跨境电商营业执照?加速度jsudo

如今电商行业的发展持续火热&#xff0c;跨境电商亦是如此&#xff0c;随着疫情的好转&#xff0c;各行各业也逐渐好转起来&#xff0c;此时也是一个做跨境电商的好时机&#xff0c;那么做跨境电商的前提需要什么呢?当然是营业执照了&#xff0c;那么如何办理跨境电商营业执照…

Flutter Ping 检查服务器通讯信号强度

Flutter Ping 检查服务器通讯信号强度 前言 对通讯敏感的程序中&#xff0c;我们除了检查当前网络通道外&#xff0c;还要检查与服务器实际的型号强度。 一般我们采用 ping 的方式返回型号的强度和稳定程度。 dart_ping 包 https://pub-web.flutter-io.cn/packages/dart_ping …

【Java】Java 链表类详记

本文仅供学习参考&#xff01; 相关文章链接&#xff1a; https://www.runoob.com/java/java-linkedlist.html https://www.developer.com/java/java-linkedlist-class/ https://www.w3schools.com/java/java_linkedlist.asp Java 中链表的类型 从最基本的角度来说&#xff0c…

EBO绘制矩形

数据&#xff1a; float vertices[] { 0.5f, 0.5f, 0.0f, // top right 0.5f, -0.5f, 0.0f, // bottom right -0.5f, -0.5f, 0.0f, // bottom left -0.5f, 0.5f, 0.0f // top left }; unsigned int indices[] { // note that we start from 0! 0, 1, 3, // first triangle 1,…