很久以前学了xss,但是没有系统的刷过题,前几天看国际赛的题目有几题xss的题目,感觉还是不是很熟,干脆找个平台来做一做。
这个是一个日本人写的平台,http://xss-quiz.int21h.jp/ ,边做边记下
Challenge 1
emmm,会点html和js都能秒过,完全是裸题,直接在输入框输入1
<script>alert(document.domain);</script>
就能过了
Challenge 2
还是水题,源码看见有个双引号,闭合一下就能进行触发了,1
"><script>alert(document.domain);</script>
Challenge 3
这题注入点不是在输入框,是在国家,改下包就行了
Challenge 4
这题会对符号进行转义,闭合一下前面的,然后插入代码
Challenge 5
这题限制了输入长度,可以在前端页面改一下maxlength,也可以直接抓包改,然后还是能弹的
Challenge 6
这题闭合一下前面的值,加个onmouseover属性就能触发了
Challenge 7
这题跟上一题差不多,过滤了<>,还是可以继续用onmouseover去触发,图基本一样,就不放了
Challenge 8
这题提示了javascript sheme,scheme 属性设置或返回用于解释 content 属性的值的格式。在连接插入js伪链接然后弹窗
Challenge 9
这题转义了<>”,正确的解法应该是utf-7编码,然后再去输入弹窗,但是我找不到thf-7转码工具,然后用上一题的方法也能苟过去,佛辣
Challenge 10
这关可以看到,过滤了domian,但是我们可以通过重复关键词去进行绕过1
"<script>alert(document.domadomainin);</script>
Challenge 11
这关对script和on开头的字符串都进行了过滤,也就是说script和onmouseover还有onclick都是不行的,所以只能用a标签去试一下1
"><a href="javascript:alert(document.domain);"></a>
但是script是被过滤了,不过可以用一个unicode编码去进行绕过,最终payload:1
"><a href=javascri	pt:alert(document.domain)>test</a>
Challenge 12
“s/[\x00-\x20\<>\”\’]//g;”,这个过滤有丶真实,<>”‘,0x00到0x20之间的符号也会被过滤掉
emmm,网上的wp都说1
``onmouseover=alert(document.domain);>
可以绕过,但是要在ie的浏览器下,肉鸡电脑没有ie,苟过去了苟过去了(逃
Challenge 13
这题提示了style attribute,可以在CSS样式中利用expression去实现javascript中的onmouseover或者onmouseout事件,但是也是要ie(版本8以下)…………1
aa:expression(onmouseover=function(){alert(document.domain)})
还有另一种方式,利用background去修改css样式1
background-color:#ff0000;background:url("javascript:alert(document.domain);");
但是也复现不了,不知道为什么……
Challenge 14
提示s/(url|script|eval|expression)/xxx/ig;,可以看到script和expression都是被过滤了的,但是其实可以在中间引入注释符,然后成功绕过,利用实体字符进行编码绕过是不行的,过滤了&,但是进行unicode是可以的,最后的payload其实跟上一题差不多,但是有个问题,也是要ie浏览器1
2
3aa:exp/**/ression(onmouseover=function(){alert(document.domain)})
aa:expre\0ssion(onmouseover=function(){alert(document.domain)})
aa:expr\0056ssion(onmouseover=function(){alert(document.domain)})
Challenge 15
利用document.write去写入javascript,但是转义了<>,可以用十六进制去进行绕过,最后payload1
\\x3cscript\\x3ealert(document.domain);\\x3c/script\\x3e
Challenge 16
这题跟上一题考点一样,但是提示看到了\\x会转成\\\\x,所有十六进制绕过是不行的了,尝试一下unicode编码1
\u003cscript\u003ealert(document.domain);\u003c/script\u003e
也可以八进制1
\\74img src=x onerror=alert(document.domain)\\76
Challenge 17
这题跟宽字节注入有点像,将双引号吞了,然后进行注入,但是这个有个要求,要在老ie(6以下版本)才能进行1
p1=1%A7&p2=+onmouseover%3Dalert%28document.domain%29%3B+%A7
吞掉p1后面的引号就可以让p1第一个引号和p2的第一个引号闭合起来,然后后面再插入我们的代码,弹个domain,最后再把p2第二个引号闭合起来,就可以实现注入了
Challenge 18
这题的操作有点骚,因为对”<>都进行了转义,所以我们要对他们进行处理,先看”的十六进制:00100010,>的十六进制:00101110,<的十六进制:00111100,然后我们将最高位全部换成1,也就是10100010、10111110、10111100,转化过来就是%A2、%BE、%BC,最后的payload就是1
%A2%BE%BCscript%BEalert(document.domain);%BC/script%BE
但是这个也是有个前提,要在ie6以下才能成功
Challenge 19
这题可以找到原来的漏洞https://blog.mindedsecurity.com/2010/09/twitter-domxss-wrong-fix-and-something.html
但是我去实现的时候总是返回404页面,看大佬的博客看见火狐是不能返回的,要用ie8,溜了溜了,颓了颓了