xss one:
第一题观察了以后发现只有name这个参数可以进行输入,因此测试点只有可能在name这里,于是直接把hacker改成<script>alert(1)</script>就可以了。效果如下:
xss two:
发现<script>标签被过滤掉了,因为html和js不区分大小写,所以可以试试<script>标签的大小写来尝试问题,然后发现用<Script>alert(1)</sCript>可以解决问题。
Xss Three:
发现<script>标签完全被过滤掉了,而且大小写形式也过滤掉,于是反过来应用这个方法,添加标签为<scr<script>ipt>alert(1)</sc</script>ript>,当服务器把<script>标签提取出来时候,就可以直接添加<script>了,效果如图所示:
XSS Four:
这次使用<script>标签后没有给到任何输出格式,而是直接给了个error,这种无法看到输出样子的xss就没法直接用<script>标签了,于是改用<img>标签使用一下,我们用了name=<img>,发现不会报错,于是这个标签可以使用,接着用<img src="1" onerror="alert(1)">解析一下,这里的src是图片路径的属性,onerror是发生错误的时候触发什么动作,于是发现可以使用了。如图:
XSS Five:
这次我们发现onerror的标签中的alert()也被直接过滤掉了,因此需要使用别的方法,在javascript中有一个转换编码的函数调用String.fromCharCode(),这个函数直接从unicode编码转换回字符串,因此我们直接使用了该函数,括号里面的编码用alert(1)的unicode编码,构造如下所示的payload:
<img src=1 onerror="eval(String.fromCharCode(97,108,101,114,116,40,39,97,39,41))">
这里要注意的就是我们的函数要注意书写正确,我在试的时候发现string.fromcharcode是错误的。
XSS SIX:
这道题查看了一下源代码,发现我们的hacker输入是放在<script>标签里面的,因此可以直接闭合掉前面碍人的<script>标签自己新建一个,然后进行处理,自己构造的payload如下所示:
想写个name=多少的式子结果发现简书居然不肯让我写这个标签。。。。上图吧
源代码构造如下所示。。。。。
XSS SEVEN:
这道题主要是用了html编码把<和>编码了,看源代码:
解决方法很简单,直接不用<script>标签了,用他的就好了,于是我构造payload如下图:
直接把他的单引号闭合了,然后把他的<script>标签用起来就好了。
XSS EIGHT:
这道题目<>被html编码了,如下:
本题的缺点出现在form的url这里,在url处并未进行过滤,因此可以从URL构造payload:/"<><script>alert(1)</script>,如图:
XSS NIGHT:
这是一道dom xss题目,只能在浏览器执行,而且firefox和chrome直接拦截了。实测ie可以
问题出现在document.write(location.hash.substring(1));该函数返回url中部分内容,因此直接构造payload:#<script>alert(1)</script>