XSS quiz 11~16解题方案

第十一题
Hint: “s/script/xscript/ig;” and “s/on[a-z]+=/onxxx=/ig;” and “s/style=/stxxx=/ig;”
对关键字符串做了过滤
script变成了这里写图片描述
“javascript:alert(document.domain)”变成了这里写图片描述
” οnmοusemοve=”alert(document.domain)变成
这里写图片描述
看答案是把javascript隔开了,在中间加了	
这里写图片描述果然可以弹。
这里写图片描述

是换行的html10编码,同样可以弹。
但把编码写到onerror、onmousemove中却无法弹窗
这里写图片描述
根据http://blog.csdn.net/emaste_r/article/details/16988167的理解,这个这个HTML的转义是针对字符串的。
第十二题
Hint: “s/[\x00-\x20\<>\”\’]//g;”
把x00到x20、引号、尖括号都过滤了,那么各种构造方法中,使用这些最少的,还是想到
” οnmοusemοve=alert(document.domain)
IE下有一个特性,可以实现闭合的功能,详单与双引号。
οnmοusemοve=alert(document.domain)即可。
第十三题
乍一看框内写着:background-color:salmon,并且框内粉红色。这是把用户的输入写进css样式中了,那么我们只需让css里面能写js就行了,搜了一下css里写js,搜到了几个方式。
尝试了background-color:url(javascript:alert(document.domain)),不成功;
尝试background-color:expression(alert(document.domain));这次成功,但是弹框一直存在,删了一个又弹一个,接连不断,还好题是过了,以后研究一下时延的问题。
这里写图片描述
第十四题
Hint: s/(url|script|eval|expression)/xxx/ig;
跟十三题一样,但是把上述的字段过滤成xxx了。。那么还是看看&#09能不能用吧
不成功,查看答案,也很简单,用/**/绕过了正则过滤。
这里写图片描述
这种方法为什么放到11题中不行?待分析。
第十五题
过滤了双引号,尖括号。
这里写图片描述
由于ducumen.write写的时候,script自解码机制,参考 HTML与JavaScript自解码机制 http://book.51cto.com/art/201301/378154.htm
HTML:进制编码:&#xH;(十六进制格式)、&#D;(十进制格式),最后的分号(;)可以不要。
HTML实体编码:即上面的那个HtmlEncode。<> &lt,&gt
onclick里的这段JavaScript出现在HTML标签内,意味着这里的JavaScript可以进行HTML形式的编码
如果用户输入出现在< script>里的JavaScript中用户输入的这段内容上下文环境是JavaScript,不是HTML(可以认为< script>标签里的内容和HTML环境毫无关系),此时用户输入的这段内容要遵守的是JavaScript法则,即JavaScript编码,具体有如下几种形式。
Unicode形式:\uH(十六进制)。
普通十六进制:\xH。
纯转义:\’、\”、\<、>这样在特殊字符之前加\进行转义。
在JavaScript执行之前,这样的编码会自动解码
既然这个地方会过滤掉<>,就可以先按照JS编码
16进制编码:
< 变成了 \x3c 并且 > 变成了 \x3e
\x3cscript\x3ealert(document.domain);\x3c/script\x3e
尝试后发现过滤了单个\
这里写图片描述
多加个\即可

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

第十六题
Hint: “document.write();” and “s/\x/\\x/ig;”
跟上一题类似,但是对\x做了过滤,尝试换一种编码方式。

js16进制下
<  \x3c
>  \x3e
js十进制下
<  \u003c
>  \u003e

所以

\\u003cscript\\u003ealert(document.domain);\\u003c/script\\u003e
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页