赞
踩
xss编码绕过 首先我们知道解析顺序,URL解码,HTML解码 ,CSS解码,JS解码
1.在服务端接受到请求后,一般是先进行url解码,然后在提取浏览器中参数。所以一般url编码是不能绕过。
2.如果我们输入了带有HTML实体编码值,只要在保证浏览器接受数据时能构建DOM树,就能进行解码操作。
下面为什么会进行url编码,不是为了绕过而进行的,因为HTML实体编码后(c);会是这种情况。而浏览器在发送到服务端传参也是&进行传参分隔的,所以就会产生问题.我们就要进行url编码
3.我们开始实验:<img/src=x οnerrοr=alert(1)// 正常显示一个错误图片 正常触发
3.1当对src,=,然后进行url编码。 失败
3.2分别对x,alert(1),alert,(1),//进行编码html实体编码,url编码 正常触发
3.3当对()进行实体编码,然后进行url编码 失败
伪协议触发实验<a href="javascript:prompt`1`">a</a> 正常弹窗
3.4 我们对javascript:prompt`1` html实体编码,url编码 正常弹窗
3.5 我们对" = > 进行实体编码,url编码 失败
事件触发实验 <body/οnlοad=prompt(1)//
3.6 对分别对prompt(1) (1) 1 //进行HTML实体编码,url编码 正常弹窗
3.7其他onload,= body 编码进行实体编码 ,url编码 失败
js弹窗触发实验<script>confirm`1`</script>
3.8 confirm进行 html实体编码,url编码 正常弹窗
3.9 对`1` , <>,script 进行实体编码,url编码 失败
小结:只要不对=和左边,以及(),<之类进行html实体编码,不破坏它的语法结构,就能正常触发
js弹窗触发实验<script>confirm`1`</script>进行js编码尝试(\u00十六进制)这里我们就不需要进行url编码了
4.0对 confirm 进行unicode进行编码, 正常弹窗
4.1对(1) 进行unicode进行编码 失败
4.2对sc进行unicode编码 失败
伪协议触发实验<a href="javascript:prompt`1`">a</a> js编码尝试
4.3对prompt进行js编码既unicode编码, 正常弹窗
4.4对`1` href ,= , javascript: 进行unicode编码 失败
事件弹出实验<svg/οnlοad=confirm(1)// js编码
4.4对confirm 进行unicode编码 正常弹窗
4.5对(1),=,onload 编码测试 失败
小结:在unioncde编码需要在js环境里解析。当弹窗函数被过滤,可用unincode编码绕过。其他均不行
tip:事情触发一共有32个,如果被过滤了,可尝试更换一个事件。
总结:我们在利用编码绕过时。当伪协议被过滤javascript:prompt`1` 。都可以进行HTML实体编码进行绕过。同样HTML,unicode编码都适用与弹窗函数被过滤情况。html可以编码(1),unicode编码不行。目前个人意见可以有限考虑HTML实体编码。在考虑unicode编码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。