xss.haozi.me靶场详解

  • 前言
  • 0x00
  • 0x01
  • 0x02
  • 0x03
  • 0x04
  • 0x05
  • 0x06
  • 0x07
  • 0x08
  • 0x09
  • 0x0A
  • 0x0B
  • 0x0C
  • 0x0D
  • 0x0E
  • 0x0F
  • 0x10
  • 0x11
  • 0x12

前言

由于xss.haozi.me是一个在线靶场, 服务部署在 Github,若网速不好,则需要科学上网。由于本靶场是一个白盒测试的靶场,我们可以看到代码的源码,所以可以直接根据源码的限制的条件来思考如何绕过。

0x00

通过源码我们发现本关没有任何限制所以直接输入
payload:<script>alert(1)</script>
就可以过关了

0x01


进入第一关分析源码得知,将我们输入的数据包裹在<textarea>标签中返回,因为<textarea>为RCDATA元素,在此标签中,只能返回</textarea>标签无法创建其他标签,所以这一关我们需要将<textarea>标签闭合输入其他标签

如果想具体了解<textarea>元素为什么无法创建其他标签可以查看这一篇我写的文章 从XSS Payload学习浏览器解码

payload为:</textarea><script>alert(1)</script>

0x02


分析源码可以得知,将输入数据的返回值放在input标签中的value值里,因为本关没有做任何过滤,所以这里有两种绕过方法。

第一种:闭合vlaue值直接写input事件
第二种:闭合input标签,重新写入恶意标签

payload如下:

方法1:aaa" οnclick="alert(1)
方法2:"> <script>alert(1)</script>

由于方法1为点击事件,需要点击文本框才能生效,所以本关推荐方法2。

0x03


进入第三关发现本关通过使用正则表达式来过滤了我们的(),将()替换为空
若对正则表达式不了解的可以查看这篇文章链接: 正则表达式常用语法解析

所以本关我们的思路就是尝试写不带括号的标签,或者通过编码的形式来绕过

以下给出两种payload方法绕过

方法1:使用反引号代替括号
<script>alert`1`</script>
方法二:使用html实体编码对括号进行编码
<img src=1 onerror="alert(1)">
注:若要使用编码的方法绕过,需要注意html解析规范
例:<script>alert&#40;1&#41;</script>将不会成功
因为<script>标签中解析编码后,不会执行编码后的函数只会将编码后的文本打印出来
所以若要使用编码,通常使用在on事件中的语句进行编码


0x04


进入这一关分析源码发现,在上一关的基础上将我们的反引号也过滤掉了,所以我们直接使用上一关的方法二就能成功绕过了。

0x05


进入第五关,分析源码发现将我们输入的数据放在html注释符中,并使用替换函数将注释符-->替换为一个emoji符号。

所以我们的绕过思路就是如何从注释行中逃逸出来。
正常的html注释格式为<!--aaaaa-->,但经过测试可以发现,在html中使用
<!--aaaa--!>的方法也达到注释的效果。
所以本关我们的payload为:--!><script>alert(1)</script>

0x06


分析代码可以发现本关将输入数据放在input标签中,并将auto和on关键字>字符进行了一个替换添加。目的防止我们在input标签中使用事件弹窗,也不让使用>对input标签进行闭合。

但因为html的特性,可以不同行执行命令,我们可以在auto、on关键字后换行,再书写=alert(1)函数。payload如下:

type="image" src=1 onerror
=alert(1)

0x07


分析代码发现本关将<>和尖括号中的字符全部过滤,防止我们书写新的标签造成恶意弹窗。

这里就需要利用一个html的特性了,html在解析中有一种纠错机制,img标签不写后面的“>”仍然是可以正常执行的。
payload的为:<img src="1" onerror="alert(1)"

0x08


通过分析源码发现,本关将输入数据放入在一个<style>标签中,并过滤了</style>标签防止我们进行闭合操作。

本关的绕过思路是使用换行操作,因为他只识别某一行特定字符进行过滤,但html可以执行不同行的命令,所以使用换行操作进行闭合style标签绕过过滤。

payload为:

</style
>
<script>alert(1)</script>

0x09


进入本关分析源码可以发现,如果不输入domainRe变量中的字符串则会直接返回语句Invalid URL,输入正确语句后放入script标签中。

所以本关需要考虑如何把变量中的url闭合
将第一个script闭合后,由于有return的返回值">,所以还需要使用注释符注释就可以绕过了。

payload为:

https://www.segmentfault.com"></script><script>alert(1)//

0x0A


进入本关后发现,本关在上一关的基础上,过滤了&、'、"、<、>、\等字符转换为实体编码。

所以本关不能想上一关一样闭合标签了,所以只能思考别的方法进行绕过。
本关可以使用url@重定向的方式进行绕过

在网址中间使用符号@
(例如https://www.google.com@stackoverflow.com)将重定向到
https://stackoverflow.com/网站(@字符后的域URL)。
其中以@分隔的话前面表示的是用户名和密码,后面表示的是登录的网站和端口,
也可以以表示重定向到第二个网站。

所以本关可以在本地写入一个test.js文件,在js文件中写入alert(1)进行重定向
payload为:
http://www.segmentfault.com@127.0.0.1/test.js

注意:由于不同的浏览器可能会有保护机制,所以本关可能不会显示成功。

0x0B


本关使用了toUpperCase()函数,将我们输入的数据转换为大写。

这里需要注意一点,在html中语句是不区分大小写的,但在js中语句是严格区分大小写的。所以例如我们直接输入<SCRIPT>ALERT(1)</SCRIPT> ,标签语句可以正常生效,但是标签中的alert函数是js解析,所以导致不会弹窗,所以本关我们将alert函数进行编码就可以绕过了,payload如下:

<img src=1 onerror='&#97;&#108;&#101;&#114;&#116;(1)'>

0x0C


进入本关发现在上一关的基础上过滤了script字符,所以我们直接使用上一关的payload就能直接绕过了。

0x0D


进入本关发现使用正则表达式过滤<、/、"、'几个符号。又将我们输入的数据放在注释行中。

所以本关想要绕过就只能使用换行符,使用换行符将我们要输入的alert(1)与注释符不在同一行,再将后面的注释符进行注释,就能成功绕过了。

payload如下:

aaaa
alert(1)
-->

0x0E


进入本关发现将所有用<开头的字母都进行了替换,让我们无法正常输入标签。

这里需要使用一个xss特殊的绕过技巧,在html中ſ这个字符转换为s,所以我们通过使用这个字符绕过这里的过滤函数。

payload如下:

<ſvg/onload='&#97;&#108;&#101;&#114;&#116;(1)'>

0x0F


我们发现本关将特殊字符转换为html实体编码放入img标签中的onerror事件中。

但是在onerror事件中html实体编码是可以正常转换调用的,所以我们可以直接输入')将前面闭合再输入,或;或换行将alert(1)分隔开来,就可以正常执行了。

payload如下:

aaaa');alert(1)//

0x10


进入本关发现,将输入的数据直接放入在一个window.data

而这个就相当于windows中弹窗调用,所以直接输入alert(1)就可以成功弹窗了
payload为:
alert(1)

0x11


进入本关发现在过滤了许多字符的基础上还将,\n、\r等换行操作给过滤了。

所以我们可以先把前面函数闭合,虽然不能使用换行操作,但是我们可以使用或者将代码分隔开来,再把后面字符使用注释符注释就可以成功绕过了。

payload如下:
"),alert(1)//

0x12


本关本质其实和上一关一样,就是将"替换为\,防止闭合前面函数。
但是我们可以通过先输入\符号将\进行转义了,这样双引号就能成功闭合了。

payload为:

\"),alert(1)//


总结:本靶场主要是白盒测试,多用于拓展xss绕过思路和技巧。

xss.haozi.me靶场详解相关推荐

  1. xss-labs靶场实战全通关详细过程(xss靶场详解)

    目录 level 1 level 2 level 3 level 4 level 5 level 6 level 7 level 8 level 9 level 10 level 11 level 1 ...

  2. xss靶场、xss.haozi.me靶场详细通关教程

    文章目录 前言 预备知识 HTML编码 img的可拓展 各种payload形式 0x00 0x01 0x02 0x03(使用了正则过滤圆括号) 其它解法 0x04(使用正则过滤圆括号和反引号) 0x0 ...

  3. [春秋云镜] CVE-2022-32991 靶场详解

    目录 前期准备 工具 渗透测试 靶场提示 靶场实战 0x01 访问路径 0x02 注册用户并登入 0x03 url存在注入点 0x04 获取cookie和user-agent 0x05 sqlmap爆 ...

  4. upload-labs-master文件上传漏洞靶场详解(1-17)

    目录 前言 pass-01 pass-02 pass-03 pass-04 pass-05 pass-06 pass-07 pass-08 pass-09 pass-10 pass-11 pass-1 ...

  5. 新浪微博的XSS漏洞攻击过程详解

    今天晚上(2011年6月28日),新浪微博出现了一次比较大的XSS攻击事件.大量用户自动发送诸如:"郭美美事件的一些未注意到的细节","建 党大业中穿帮的地方" ...

  6. XSS靶场prompt.ml过关详解

    XSS靶场prompt.ml过关详解 前言 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0 ...

  7. Pikachu靶场之文件上传漏洞详解

    Pikachu靶场之文件上传漏洞详解 前言 文件上传漏洞简述 什么是文件上传漏洞? 文件上传的原理 文件上传漏洞有哪些危害 文件上传漏洞如何查找及判断 文件上传如何防御 文件上传漏洞绕过的方式有哪些 ...

  8. XSS是什么?(Xmind配文详解)

    一张图带你详解XSS (话不多说上图) 一.什么是 XSS XSS全称(Cross Site Scripting)跨站脚本攻击,是最常见的Web应用程序安全漏洞之一,位于OWASP top 10 20 ...

  9. Pikachu靶场之文件包含漏洞详解

    Pikachu靶场之文件包含漏洞详解 前言 文件包含漏洞简述 1.漏洞描述 2.漏洞原因 3.漏洞危害 4.如何防御 第一关 File Inclusion(local) 1.尝试读取"隐藏& ...

  10. Pikachu靶场之越权漏洞详解

    Pikachu靶场之越权漏洞详解 前言 逻辑越权漏洞简述 漏洞描述 漏洞原因 漏洞分类 水平越权 垂直越权 权限框架缺陷 如何防御 第一关 水平越权 问题分析 尝试防御 第二关 垂直越权 问题分析 尝 ...

最新文章

  1. 四川大学c语言期末试题答案,四川大学计算机学院2005级C语言程序设计试卷(2份,有答案)...
  2. nexus-3本地下载jar的settipng.xml配置
  3. 【Boost】boost库asio详解5——resolver与endpoint使用说明
  4. 前端学习(2686):重读vue电商网站7之登录预校验
  5. android 获取应用列表,获取全部应用列表
  6. 对话MathWorks:解读MATLAB技术生态圈与未来趋势
  7. ioc spring 上机案例_Spring的IoC入门案例
  8. 使用Docker-Compose安装GitLab服务器
  9. 深入理解SpringBoot (4)
  10. RabbitMQ系列(七)--批量消息和延时消息
  11. 经典神经网络 -- FPN : 设计原理与pytorch实现
  12. 百度echarts极速入门
  13. java俄罗斯方块程序_java基础俄罗斯方块
  14. Android mvp 架构的自述
  15. h5 字体加粗_css 加粗字体
  16. kubuntu我显示服务器,kubuntu 开启ssh 与加速连接速度
  17. 华为云Nginx配置
  18. MATLAB使用AppDesigner制作测试界面的入门小案例
  19. ADFS 概念与基本开发介绍
  20. 机器学习(三)——梯度下降

热门文章

  1. 群论基础速成(3):拉格朗日定理、直积与半直积
  2. EM9636数据上传百度云
  3. 大疆精灵4rtk照片信息读取
  4. python3爆破服务器_Python 3.5 之爆破二级域名.
  5. 蒙特卡洛与遗传算法介绍
  6. 征服c指针_征服C指针.pdf
  7. Windows出现“未连接到互联网代理服务器出现问题,或者地址有误。问题解决办法”
  8. drony+fiddler抓包
  9. X书app数美-sid分析
  10. golang中零停机重启服务之套接字复用,endless