复现DOM型XSS攻击(1-8关)

目录

第一关:​

分析代码:

第二关:

分析代码:

第三关:

分析代码:

第四关:

分析代码:

第五关:

分析代码:

第六关:

分析代码:

第七关:

分析代码:

第八关:

分析代码:


使用的靶场环境在这个网站XSS Game - Learning XSS Made Simple! | Created by PwnFunctionXSS Game: Learn Cross Site Scripting (XSS) by completing challenges!icon-default.png?t=N7T8https://xss.pwnfunction.com/

第一关:

分析代码:

是将网页中一个特定 <h2> 元素的内容更新为一个字符串,通过<script> 标签中的 JavaScript 代码获取当前网页 URL 的查询参数 "somebody"。如果查询参数存在,则将其值和字符串 " Toucha Ma Spaghet!" 连接;如果不存在,则使用默认值 "Somebody"

未传参

将somebody参数设置为aaa

可以看出它根据 URL 查询参数 "somebody" 的值直接填充到 <h2> 元素的内容

同时根据它的要求:不能和用户交互,必须要弹出1337

尝试使用<script>alert(1337)</script>

很明显的可以看出这块是有标签的但是就是没有触发

通过查看官方文档发现,官方觉得innerHTML这个标签是一个危险的标签,所以禁用了这个方法,但是也只禁用了这一个方法。

使用img标签

?somebody=<img src=1 οnerrοr="alert(1337)">

成功

第二关:

分析代码:

从当前网页的 URL 中获取查询参数 "jeff" 的值。如果没有该参数,则默认值为 "JEFFF"。初始化一个空字符串变量 ma。使用 eval 函数将 jeff 的值插入到字符串中,赋值给 ma,最后是设置一个延迟 1 秒的定时器,定时器到期后将 ma 的值设置为 maname 元素的文本内容。总的来说就是从 URL 中获取参数 "jeff",生成一个字符串并在 1 秒后显示在网页上。

我们可以考虑在eval中做。

?jeff=aaa";alert(1337);"

使用连接符-来做

?jeff=aaa"-alert(1337);-"

第三关:

分析代码:

通过URL中的查询参数提取名为wey的参数,如果没有这个参数,则使用默认值“do you know da wey?”。将wey参数中的所有尖括号去掉,在uganda这个<div>元素中插入一个文本输入框,并将其占位符设置为处理后的wey参数值。最终效果是在页面中显示一个带有占位符的文本框。

同样闭合双引号,使用onfocus和autofocus避免和用户交互

?wey=aaa" οnfοcus=alert(1337) autofocus"

第四关:

分析代码:

首先是定义一个表单,ID为“ricardo”,使用GET方法提交数据,然后在表单中添加一个文本输入框,名称为“milos”,默认值为“True”,设置表单的提交地址为当前URL中名为“ricardo”的查询参数的值,如果没有该参数,则默认为“#”,并且在2秒后自动提交表单,提交到指定的URL

这个就好办,用action中的javascript

?ricardo=javascript:alert(1337)

第五关:

分析代码:

和之前差不多,只不过通过正则表达式过滤了smith字符串中的括号、反引号和反斜杠。将处理后的 smith 内容设置为前面创建的 <h2> 标签的内部 HTML。

可以看到这关用的也是innerHTML标签,尝试使用img,发现括号被删除了

先对()进行实体编码,在对实体编码进行url编码

%26%2340%3b  ---(

%26%2341%3b  ---)

然后再使用location解析

?markassbrownlee=<img%20src=1 οnerrοr=location="javascript:alert%26%2340%3b1337%26%2341%3b">

第六关:

分析代码:

使用正则表达式将balls中的所有字母和数字替换为空字符串。最后使用eval函数执行balls中的代码。

这种类型的基本上有固定的解法,就是编码

在https://jsfuck.com/ 网站

因为在url查询字符串部分(?后面的部分)时,+通常会被解码为空格,所以我们要对这些符号再次编码

第七关:

分析代码:

这一关比前一关过滤了更多的字符串中的特定字符(包括反引号、单引号、双引号、加号、减号、感叹号和方括号)替换为下划线 。同时还限制长度在50之内,将字符串中的 alert 关键字替换为下划线,最后使用eval执行处理后的字符

使用Function构造函数,Function()可以直接执行,如果不赋值的话在后加一个括号Function()(),就可以执行,同时因为js严格区分大小写,所以Function(/ALERT(1337)/)()识别失败,但是由于Function()()中可以定义函数,所以可以对前边定义的函数进行转小写操作

命令如下:

Function(/ALERT(1337)/.source.toLowerCase())()

第八关:

分析代码:

大体和前边一样,不过它使用 DOMPurify.sanitize 过滤框架对获取的内容进行清理,会把你的危险属性过滤完了,最后将结果赋值给ID为“boomer”的元素的内部HTML。因为这个框架是由全球最顶尖的一批安全研究员合力开发的,所以几乎不可能去绕过这个框架。所以这个innerHTML标签就利用不了。

我们就只能往下考虑,看这个setTimeout函数,setTimeout函数在2秒后调用名为ok的函数

但是我们执行后可以发现这个函数就不存在

同时这也是个注入点,使用dom破坏的技术。

?boomer=<a id=ok href="tel:alert(1337)">

这里之所以使用tel不使用javascript是因为javascript对于这个框架而言在黑名单里,所以我们就需要找这个框架的白名单

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

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

相关文章

SpringBoot依赖之Spring Data Redis 一 List 类型

概念 Spring Data Redis (AccessDriver) 依赖名称: Spring Data Redis (AccessDriver)功能描述: Advanced and thread-safe Java Redis client for synchronous, asynchronous, and reactive usage. Supports Cluster, Sentinel, Pipelining, Auto-Reconnect, Codecs and muc…

Spring源码-源码层面讲解bean标签添加了lookup-method和replaced-method标签之后源码执行流程,以及对象实例化的流程

bean.xml文件添加lookup-method和replaced-method标签 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:sch…

C语言部分内存函数详解

C语言部分内存函数详解 前言1.memcpy1.1基本用法1.2注意事项**目标空间与原空间不能重叠****目标空间原数据会被覆盖****目标空间要够大****拷贝字节数需小于原空间大小** 1.3模拟实现 2.memmove2.1基本用法2.2注意事项2.3模拟实现 3.memset3.1基本用法 4.memcmp4.1基本用法4.2…

[论文笔记]ZeRO: Memory Optimizations Toward Training Trillion Parameter Models

引言 今天带来ZeRO: Memory Optimizations Toward Training Trillion Parameter Models的论文笔记。 大型深度模型提供了显著的准确性提升&#xff0c;但训练数十亿到数万亿个参数是具有挑战性的。现有的解决方案&#xff0c;如数据并行和模型并行&#xff0c;存在基本的局限…

python小游戏之摇骰子猜大小

最近学习Python的随机数&#xff0c;逻辑判断&#xff0c;循环的用法&#xff0c;就想找一些练习题&#xff0c;比如小游戏猜大小&#xff0c;程序思路如下&#xff1a; 附上源代码如下&#xff1a; 摇骰子的函数&#xff0c;这个函数其实并不需要传任何参数&#xff0c;调用后…

【Delphi】中多显示器操作基本知识点

提要&#xff1a; 目前随着计算机的发展&#xff0c;4K显示器已经逐步在普及&#xff0c;笔记本的显示器分辨率也都已经超过2K&#xff0c;多显示器更是普及速度很快。本文介绍下Delphi中操作多显示器的基本知识点&#xff08;Windows系统&#xff09;&#xff0c;这些知识点在…

【Java】 方法引用与Lambda(快速上手)

Java系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容&#xff1a;三、问题描述四、解决方案&#xff1a;4.1 方法引用 五、总结&#xff1a; 一、前言 Calculator::plus看到::好奇有什…

使用多种机器学习模型进行情感分析

使用 TF-IDF 与贝叶斯分类器进行情感分析是一个常见且有效的组合&#xff0c;特别是在文本分类任务中。贝叶斯分类器&#xff08;通常是朴素贝叶斯分类器&#xff09;等机器学习模型具有计算简单、效率高的优点&#xff0c;且在文本分类任务中表现良好。接下来&#xff0c;我将…

eNSP 华为ACL配置

华为ACL配置 需求&#xff1a; 公司保证财务部数据安全&#xff0c;禁止研发部门和互联网访问财务服务器&#xff0c;但总裁办不受影响 R1&#xff1a; <Huawei>sys [Huawei]sys Router1 [Router1]undo info-center enable [Router1]int g1/0/0 [Router1-GigabitEth…

语音助手Verbi:科技创新的未来

今天&#xff0c;我要向大家介绍一个名为Verbi的语音助手项目。这是一个结合了多种先进技术的模块化语音助手应用程序&#xff0c;能够实现语音到文本、文本生成和文本到语音的全流程处理。通过这个项目&#xff0c;我们可以体验到尖端科技如何改变我们的日常生活。 Verbi的诞…

ubuntu配pip的源

临时使用源 pip install [包名] -i [pip源URL]# 示例 pip install pytest -i https://pypi.tuna.tsinghua.edu.cn/simple更换配置pip镜像源 step1&#xff1a;创建一个配置文件 mkdir ~/.pip/ cd .pip sudo vim pip.conf step2:填写源信息&#xff0c;保存并退出【:wq】 [g…

文件包含漏洞(一)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 一&#xff0c;漏洞简述。 文件包含漏洞&#xff0c;通常发生在Web应用程序中&#xff0c;特别是那些使用用户输入动态生成内容的部分。这种漏洞允许攻击者通过提交恶意的文件路径请…

10 个 C# 关键字和功能

在 Stack Overflow 调查中&#xff0c;C# 语言是排名第 5 位的编程语言。它广泛用于创建各种应用程序&#xff0c;范围从桌面到移动设备再到云原生。由于有如此多的语言关键字和功能&#xff0c;对于开发人员来说&#xff0c;要跟上新功能发布的最新信息将是一项艰巨的任务。本…

C语言——操作符详解

目录 1.操作符的分类 2.原码、反码和补码 3.移位操作符 3.1 左移操作符 3.2 右移操作符 4.位操作符 4.1 按位与& 4.2 按位或| 4.3 按位异或^ ​编辑 4.4 按位取反~ 4.5 应用题 4.5.1 题目&#xff1a;不能创建临时变量&#xff0c;实现两个整数的交换 4.5.2 …

本地下载安装WampServer结合内网穿透配置公网地址远程访问详细教程

文章目录 前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 Wamp 是一个 Windows系统下的 Apache PHP Mysql 集成安装环境&#xff0c;是一组常用来…

FFMPEG推流器讲解

FFMPEG重要结构体的讲解 FFMPEG中有六个比较重要的结构体&#xff0c;分别是AVFormatContext、AVOutputFormat、 AVStream、AVCodec、AVCodecContext、AVPacket、AVFrame、AVIOContext结构体&#xff0c;这几个结构体是贯穿着整个FFMPEG核心功能。 AVFormatContext 这个结构…

nginx基础配置

1. https配置 首先在nginx.conf中配置https 2. 重定向 rewrite ^/(.*)$ https://www.sxl1.com/$1 permanent;3. 自动索引 autoindex on;4. 缓存 Nginx expire缓存配置: 缓存可以降低网站带宽&#xff0c;加速用户访问location ~ .*\.(gif|jpg|png)$ {expires 365d;roo…

react最好用的swiper插件和拖动插件 react-tiny-slider react-draggable

react移动端项目&#xff0c;其实有挺多的ui框架的&#xff0c;但是我们公司的项目&#xff0c;都是自己封装的ui库&#xff0c;又不可能为了一个轮播图就去再安装一个ui库 所以找了很多的轮播插件&#xff0c;都是不能满足需求 最后找到了它&#xff0c;react-tiny-slider&…

Windows Microsoft Edge 浏览器 配置【密码】

在浏览 Web 时&#xff0c;Microsoft Edge 可以轻松保存密码。 在桌面或移动设备上的 Edge 浏览器中输入新密码时&#xff0c;Microsoft Edge 会询问你是否要记住用户名和密码。 下次访问该网站时&#xff0c;浏览器将完成帐户信息的填写。 如果使用 Microsoft 帐户登录到 Edg…

redis集合若干记录

无序集合 redis通常使用字典结构保存集合数据&#xff0c;字典健存储集合元素&#xff0c;字典值为空。如果一个集合全为整数&#xff0c;使用字典就有点浪费了&#xff0c;redis使用intset保存。 插入元素到intset中 获取插入元素编码&#xff0c;如果插入元素编码级别高于int…