XSS quiz 11~16解题方案
2015-12-14 14:08
639 查看
第十一题
Hint: “s/script/xscript/ig;” and “s/on[a-z]+=/onxxx=/ig;” and “s/style=/stxxx=/ig;”
对关键字符串做了过滤
script变成了
![](http://img.blog.csdn.net/20151214102747659)
“javascript:alert(document.domain)”变成了
![](http://img.blog.csdn.net/20151214102836860)
” onmousemove=”alert(document.domain)变成
![](http://img.blog.csdn.net/20151214103209190)
看答案是把javascript隔开了,在中间加了 ;
![](http://img.blog.csdn.net/20151214103626475)
果然可以弹。
![](http://img.blog.csdn.net/20151214104754556)
;是换行的html10编码,同样可以弹。
但把编码写到onerror、onmousemove中却无法弹窗
![](http://img.blog.csdn.net/20151214104649707)
根据/article/2049905.html的理解,这个这个HTML的转义是针对字符串的。
第十二题
Hint: “s/[\x00-\x20\<>\”\’]//g;”
把x00到x20、引号、尖括号都过滤了,那么各种构造方法中,使用这些最少的,还是想到
” onmousemove=alert(document.domain)
IE下有一个特性,
第十三题
乍一看框内写着:background-color:salmon,并且框内粉红色。这是把用户的输入写进css样式中了,那么我们只需让css里面能写js就行了,搜了一下css里写js,搜到了几个方式。
尝试了background-color:url(javascript:alert(document.domain)),不成功;
尝试background-color:expression(alert(document.domain));这次成功,但是弹框一直存在,删了一个又弹一个,接连不断,还好题是过了,以后研究一下时延的问题。
![](http://img.blog.csdn.net/20151214112802302)
第十四题
Hint: s/(url|script|eval|expression)/xxx/ig;
跟十三题一样,但是把上述的字段过滤成xxx了。。那么还是看看 能不能用吧
不成功,查看答案,也很简单,用/**/绕过了正则过滤。
![](http://img.blog.csdn.net/20151214134520031)
这种方法为什么放到11题中不行?待分析。
第十五题
过滤了双引号,尖括号。
![](http://img.blog.csdn.net/20151214135540186)
由于ducumen.write写的时候,script自解码机制,参考 HTML与JavaScript自解码机制 http://book.51cto.com/art/201301/378154.htm
HTML:进制编码:H;(十六进制格式)、D;(十进制格式),最后的分号(;)可以不要。
HTML实体编码:即上面的那个HtmlEncode。<> <,>
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
尝试后发现过滤了单个\
![](http://img.blog.csdn.net/20151214141213222)
多加个\即可
第十六题
Hint: “document.write();” and “s/\x/\\x/ig;”
跟上一题类似,但是对\x做了过滤,尝试换一种编码方式。
所以
Hint: “s/script/xscript/ig;” and “s/on[a-z]+=/onxxx=/ig;” and “s/style=/stxxx=/ig;”
对关键字符串做了过滤
script变成了
“javascript:alert(document.domain)”变成了
” onmousemove=”alert(document.domain)变成
看答案是把javascript隔开了,在中间加了 ;
果然可以弹。
;是换行的html10编码,同样可以弹。
但把编码写到onerror、onmousemove中却无法弹窗
根据/article/2049905.html的理解,这个这个HTML的转义是针对字符串的。
第十二题
Hint: “s/[\x00-\x20\<>\”\’]//g;”
把x00到x20、引号、尖括号都过滤了,那么各种构造方法中,使用这些最少的,还是想到
” onmousemove=alert(document.domain)
IE下有一个特性,
可以实现闭合的功能,详单与双引号。onmousemove=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了。。那么还是看看 能不能用吧
不成功,查看答案,也很简单,用/**/绕过了正则过滤。
这种方法为什么放到11题中不行?待分析。
第十五题
过滤了双引号,尖括号。
由于ducumen.write写的时候,script自解码机制,参考 HTML与JavaScript自解码机制 http://book.51cto.com/art/201301/378154.htm
HTML:进制编码:H;(十六进制格式)、D;(十进制格式),最后的分号(;)可以不要。
HTML实体编码:即上面的那个HtmlEncode。<> <,>
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
相关文章推荐
- [LeetCode]Shortest Distance from All Buildings
- 第二篇:_UICascadingTextStorage attributesAtIndex:effectiveRange:]: Range or index out of bounds
- 各个大神大公司的UED
- [_UICascadingTextStorage attributesAtIndex:effectiveRange:]: Range or index out of bounds
- IOS8 keyboardWillShow 在UIKeyboardWillShowNotification 调用两次 问题解决
- UIButton
- HDU 4915 Parenthese sequence _(:зゝ∠)_ 哈哈
- iOS开发 Xcode UIImageView设置一个圆形的图片
- JAVA中生成C#中的GUID作为主键
- iOS 16进制颜色和UIcolor的转换
- vmware虚拟机guest系统重启后获得169.254.X.X的ip解决方法
- OC NSNumber和NSValue和NSDate和NSData
- 【LEETCODE】225-Implement Stack using Queues
- UIAlertViewController+TextField 输入框
- foundation的使用——NSNumber NSValue
- 【翻译】oc.lazyLoad with Angular ui router(按需加载文件)
- Git GUI下载远程源代码简单使用介绍
- Shiro介绍(六):扩展自己的@RequiresPermission
- 利用WebRequest类上传文件
- [Tue, 1 Dec 2015 ~ Fri, 4 Dec 2015] Deep Learning in arxiv