xss challenges writeup(下)

stage11

链接:http://xss-quiz.int21h.jp/stage11th.php?sid=d96d48271b06401dacdf4b97aa0651385b685c06

先来个探针吧,发现输出还是在input的value属性中,测试发现双引号与大于符号都没有被过滤,意味着是可以通过添加属性,或是直接闭合标签两种方式来进行绕过。我们一个一个尝试,先来试试添加事件属性吧,试试onmouseover=alert(document.domain),查看源码发现输出变成了:
这里写图片描述
,可以看到我们的时间属性变成了onxxx,我多试了几个发现都变成了onxxx的形式,看来事件属性这一条路是走不通了!我们接下来试试闭合标签的方法,"><script>alert(document.domain)</script>,同样的变成了<xxscript></xxscript>的形式,再试试其它标签(<img><a>等)<a href="javascript:alert(document.domain)">xss</a>,这样是不行的,script会被替换成xscript,所以我们需要对script中某一字符进行html编码,所以利用代码如下:

"><a href="java&#x73;cript:alert(document.domain)">hello</a>


这里的解码顺序应该是html->url->javascript
注:此处绕过编码问题可以参考:https://www.cnblogs.com/kuoaidebb/p/3983886.html
如果由不懂的地方欢迎与我讨论,我会第一时间回应

stage12

链接:http://xss-quiz.int21h.jp/stage_no012.php?sid=838924f09a1a09cf3bd83a07346c210a07cf03ff

输出在input的value属性中,同样的需要闭合双引号,但是这里双引号都被过滤了,直接替换为空了,那么我们就只有试试再ie环境下用反引号来闭合属性了,然后随便试了个属性就弹窗成功了:

onmouseover=alert(document.domain)
这里写图片描述

stage13

链接:http://xss-quiz.int21h.jp/stage13_0.php?sid=d33513b8c3117e9c518e825f6969d86669387355

这次的输入是作为css的值,还是先用同样的套路试一下,看看能否闭合双引号,遗憾的是不能,这次连反引号在ie都不起作用了(具体原因先忽略),总之这次是逃不出这个双引号了,那么我们就只有在css上下功夫了,我想到了两种方式:

1.利用css的expression语句(只能在ie下进行)
2.利用css中可以存在url的地方,这样我们就可以利用javascript伪协议

第一种方式:xss:expression(onmouseover=function(){alert(document.domain);});
这里写图片描述

第二种方式background-color:red;background:url(javascript:alert(1));
第二种方式经过部分测试,是不成功的,因为在我的测试浏览器下都是对alert(document.domain)的左右括号进行了url编码的,我通过一些代码混淆方式也没有绕过,所以此方法大家可以用较低版本的ie尝试一下

stage14

链接:http://xss-quiz.int21h.jp/stage-_-14.php?sid=7f93dcfde873958e81eb57343097c4f910e84ccb

按照stage13的套路试下,发现expression被替换成了xxx,因为在css中嘛,我们可以通过在expression这个单词中插入一些不影响浏览器解析的东西来绕过过滤器。比如:/**/、\、\0这些字符都可以(亲测有效,在ie下)

xss:expressi/**/on(onmouseover=function(){alert(document.domain);});

stage15

链接:http://xss-quiz.int21h.jp/stage__15.php?sid=c3c248487e6d9efa3097da52aa05a7a58ddefc8f
这次输入的值用document.write()输出在了页面之中,不过还是经过了编码的,因为我直接输入<script>alert(document.domain)</script>,script标签的两个尖括号是被编码成了html实体的,所以我们只需要简单的利用代码混淆的知识,对尖括号进行unicode编码就行:

\\u003cscript\\u003ealert(document.domain)\\u003c/script\\u003e

这里写图片描述

stage16

链接:stage16
感觉输出位置与上一题一致,于是就拿stage15的代码试试,结果就弹了:
这里写图片描述
当然我还是要知道到底过滤了什么,于是查看了提示:“document.write();” and “s/\x/\\x/ig;”,可以看到题目过滤了\x这种形式的代码混淆方式,但是我凑巧就用了\uxxxx这种形式,所以就过了

stage17

链接:stage17

发布了116 篇原创文章 · 获赞 161 · 访问量 42万+

猜你喜欢

转载自blog.csdn.net/he_and/article/details/79865236
xss