xss.pwnfunction.com靶机 Warmups

news/2024/11/15 2:08:24/

通关要求弹出警告框alert(1337)
没有用户交互
不能使用外链接
在chrome中测试

Ma Spaghet!

通过分析代码我们可以看到它直接用innerHTML将接收的内容赋值
但是我们不能使用<script>标签因为:HTML 5 中指定不执行由 innerHTML 插入的 <script> 标签。
所以我们可以使用:<img src=x οnerrοr=alert(1337)>或者<svg οnlοad=alert(1337)>

Jefff

我们可以看到它通过eval()函数将我们输入的内容与原定的字符进行了拼接
并设置了在一秒后使用innerText添加进页面
innertext会使我们的标签以普通字符串进行展示
但是eval()函数会将传入的字符串当做 JavaScript 代码进行执行。并且可以传入多个参数
这样我们就可以先闭合之后写入分隔符再写入我们的恶意代码之后将后面的引号注释掉
我们最终得到的代码:";alert(1337)//

Ugandan Knuckles

它将<>进行了过滤
将我们输入的内容写入了input标签的placeholder属性中
我们可以利用onfocus(聚焦)事件

我们可以看到当我们点击到输入框时输入框会高亮此时就是聚焦了
结合上边我们的分析我们得到的payload:" οnfοcus=alert(1337) aoutfocus//
首先闭合 然后添加onfocus触发的事件 aoutfocus自动进行聚焦

Ricardo Milos

submit() 是一个用于表单元素的 JavaScript 方法,用于提交表单。当调用这个方法时,它会触发表单的提交操作,就好像用户点击了表单中的提交按钮一样。
它定义了一个action然后将我们输入进行了一个提交
所以我们的payload:?ricardo=javascript:alert(1337)
它之所以写submit()是因为只有进行了提交才能触发这个action

Ah That's Hawt

我们可以看到它将我们的()`等符号进行了过滤导致我们无法使用alert()
这里我们第一时间会想到的是html实体编码

但是我们发现它貌似并没有上传成功
在 URL 中,&字符通常用作查询参数的分隔符,用于分隔不同的参数。如果我们想要在 URL 中包含 & 字符本身,而不是作为分隔符,通常需要对其进行编码。在我们提供的代码中,& 字符没有被编码,因此如果我们尝试将这段代码作为一个整体放在 URL 中进行上传,那么 URL 解析器可能会将其视为两个参数之间的分隔符,导致上传行为失败或者解析错误。
所以我们需要对&进行url编码

之后我们的payload:?markassbrownlee=<img%20src=x%20οnerrοr=alert%26%2340%3B1337%26%2341%3B>

Ligma

我们可以看到这个过滤比较狠将我们的大小写和数字都进行了过滤
这个过滤看起来让我们无计可施
jsfuck--一个很有意思的javascript特性 
JSFuck 的设计者将它称为“把代码缩小到最小的表达”,因为它使用了 JavaScript 中最少的一组字符来表示完整的代码逻辑。
我们通过百度将我们的代码进行编译

我们会得出一个非常长的payload但是我们上传后依然不行
因为我们的 + 在url中被识别成了空格
所以我们需要对这段代码进行urlcode转码

我们得到了一段巨长无比的代码

Mafia

这里显然我们的jsfuck用不了了它将特殊字符进行了过滤并且限制了payload的长度

方法1


这里我们需要用到location.hash.slice(1)
location.hash是 JavaScript 中用于获取或设置当前页面 URL 中的片段标识符部分的属性。
片段标识符是 URL 中的一个特殊部分,它以#符号开头,常被用来表示文档中的某个特定位置或片段。
获取到后我们使用slice()函数进行截取#号之后的部分
所以我们的payload:?mafia=eval(location.hash.slice(1))#alert(1337)

方法2

我们可以使用转进制的方法将我们的字符转为数字
我们payload可以写成:?mafia=eval(8680439..toString(30))(1337)
其中的数字是什么呢?

我们可以看到使用toString()后数字转为了alert
这里使用的是parseInt()

第一个参数是我们要转换的字符串,第二个参数表示的是30进制
为什么要使用30进制,我们可以想想我们的16进制是什么,是0-9 A-F
所以我们的16进制在这里只能取到F如果我们的字符中包含t这样的字符,我们就需要使用到包含t的进制数,如果我们的字符中包含z我们就需要使用36进制

方法3

它虽然过滤了小写的alert但是大写它没有过滤
但是使用大写的话我们的js是严格区分大小写的没办法执行
但是如果我们将它以大写的形式传入之后转为小写是不是就可以执行了
所以我们的payload:?mafia=eval(/ALERT(1337)/.source.toLowerCase())
也可以写一个匿名的函数:?mafia=Function(/ALERT(1337)/.source.toLowerCase())()

Ok, Boomer

这里我们可以看到它将我们的传参通过DOMPurify过滤框架给过滤了
尝试写一个恶意代码

可以看到它的过滤框架吧我们的危险字符直接删除了
但是我们看到它下面写了一个setTimeout(ok, 2000)
这有什么用呢?
我们可以利用DOMCLOBBERING(dom破坏)
我们的payload可以写成:<a id=ok href=tel:alert(1337)>
tel是在这个过滤框架的白名单中


http://www.ppmy.cn/news/1381974.html

相关文章

flume系列之:为flume agent组增加新的节点,提高flume agent组消费能力

flume系列之:为flume agent组增加新的节点,提高flume agent组消费能力 一、拷贝服务的systemctl文件二、拷贝jmx导出程序三、拷贝jmx导出数据格式配置文件四、拷贝flume agent配置五、启动flume agent和jmx服务一、拷贝服务的systemctl文件 flume agent服务flume agent jmx服…

wayland(xdg_wm_base) + egl + opengles 渲染使用纹理贴图的旋转 3D 立方体实例(十三)

文章目录 前言一、使用 stb_image 库加载纹理图片1. 获取 stb_image.h 头文件2. 使用 stb_image.h 中的相关接口加载纹理图片3. 纹理图片——cordeBouee4.jpg二、渲染使用纹理贴图的旋转 3D 立方体1. egl_wayland_texture_cube.c2. Matrix.h 和 Matrix.c3. xdg-shell-client-pr…

Linux本地搭建FastDFS系统

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…

手机App防沉迷系统C卷(JavaPythonC++Node.jsC语言)

智能手机方便了我们生活的同时,也侵占了我们不少的时间。"手机App防沉迷系统"能够让我们每天合理的规划手机App使用时间,在正确的时间做正确的事。 它的大概原理是这样的: 1、在一天24小时内,可注册每个App的允许使用时段; 2、一个时段只能使用一个App,举例说明…

VUE+内置iframe传值失效问题解决

起因&#xff1a; 公司业务需要计算建筑物截收面积&#xff0c;然后我采用的是openCV来计算&#xff0c;在vue内部引用不了&#xff0c;然后就采用了iframe原生html来完成&#xff1b;功能实现了我想让iframe和vue通信&#xff1b;然后用原有方式试了多次都失败了&#xff0c;i…

golang sync.Pool 指针数据覆盖问题

场景 1. sync.Pool设置 var stringPool sync.Pool{New: func() any {return new([]string)}, }func NewString() *[]string {v : stringPool.Get().(*[]string)return v }func PutString(s *[]string) {if s nil {return}if cap(*s) > 2048 {s nil} else {*s (*s)[:0]…

TortoiseSVN 报错:The server unexpectedly closed the connetion

前言 CentOS7Linux 安装subversionmod_dav_svn&#xff0c;搭建subversion(svn)服务器 The server unexpectedly closed the connetion 解决办法 重启Apache服务 shell> systemctl restart httpd

ajax框架格式,每个属性的作用

AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;框架是一种用于创建异步Web应用程序的技术。在AJAX框架中&#xff0c;通常使用JavaScript来发送和接收HTTP请求&#xff0c;从而在不重新加载整个页面的情况下更新页面的部分内容。虽然AJAX不是特定的框架&#xf…