zoukankan      html  css  js  c++  java
  • Cross-Site-Scripting

    xss之过滤

    几种xss绕过的姿势:

    • 前端限制绕过,直接抓包重放,或者修改html前端代码。比如反射型XSS(get)中限制输入20个字符。
    • 大小写,比如<SCRIPT>aLeRT(111)</sCRIpt>。后台可能用正则表达式匹配,如果正则里面只匹配小写,那就可能被绕过。
    • 双写(拼凑),<scri<script>pt>alert(111)</scri</script>pt>。后台可能把<script>标签去掉换,但可能只去掉一次。
    • 注释干扰,<scri<!--test-->pt>alert(111)</sc<!--test-->ript>。加上注释后可能可以绕过后台过滤机制。
    • 编码的方式:后台过滤了特殊字符,比如<script>标签,但该标签可以被各种编码,后台不一定会过滤当浏览器对该编码进行识别时,会翻译成正常的标签,从而执行。

     

    当我们输入<script>' ":,33

    我们发现我们输入的内容只有<script>标签未显示,说明<script>标签被过滤了。

    尝试用大小写混合的方式看看能否绕过

    payload如下:

    <SCRIpT>alert("liuxixi1")</sCRiPt>

    成功出现弹窗!

     

    payload2:

    <img src=2 onerror=alert("刘茜茜")>

     !!解释<img src=2 onerror=alert("刘茜茜")>:

    完整的是:<script type="text/javascript">alert("刘茜茜")</script>
    js,alert("刘茜茜")语句是弹出消息框,显示刘茜茜
    <img src=1 onerror=alert("刘茜茜")>
    是当图片没有找到路径(即src=“路径:可以使相对路径也可以使绝对路径”找不到图片)就会 弹出消息框,显示刘茜茜 ,就是onerror=alert("刘茜茜")起的作用

     xss之htmlspecialchars

    htmlspecialchars()函数定义及用法:

      在php中,htmlspecialchars()函数是使用来把一些预定义的字符转换为HTML实体,返回转换后的新字符串,原字符串不变。如果 string 包含无效的编码,则返回一个空的字符串,除非设置了 ENT_IGNORE 或者 ENT_SUBSTITUTE 标志;

    被转换的预定义的字符有:

      &:转换为&amp;

      ":转换为&quot;

      ':转换为成为 '

      <:转换为&lt;

      >:转换为&gt;

    可用的引号类型:

      ENT_COMPAT:默认。仅编码双引号。

      ENT_QUOTES:编码双引号和单引号。

      ENT_NOQUOTES:不编码任何引号。

    当我们输入<script>./()2' ":时,输出结果是我们输入的内容都被记录了,说明有些内容是被编码了。

     

     由前面被转换的预定字符可以知道,此函数可以编码&," ,<,>,但是单引号同样可以使用。

    构造payload如下:

    'onclick='alert("liuxixi2")'

    前后的单引号是闭合

     xss之href输出

     输入www.sohu.com,查看源代码,发现输入的内容显示在a标签的href属性里面,可以使用javascript协议来执行js

     这个页面会判断我们输入的内容,然后判断我们输入的网址,如果输入的不是百度会对我们输入的内容用 htmlspecialchars() 进行处理。这次htmlspecialchars函数使用了ENT_QUOTES类,也加上了对单引号的转义,

    如果要对 href 做处理,一般有两个逻辑:

    • 输入的时候只允许 http 或 https 开头的协议,才允许输出
    • 其次再进行htmlspecialchars处理

    payload如下:

    javascript:alert("liuxixi3")

    成功弹窗:

     xss之js输出

    输入1111,查看源码

     发现我们输入的内容在js当中,所以我们需要将前面的<script>标签闭合掉就能显示我们输入的内容了。

    payload如下:

    </script><script>alert("liuxixi3")</script>

    成功出现弹窗

     

  • 相关阅读:
    代码整洁之道
    PHP并发IO编程之路
    U盘启动盘的制作--用U盘硬装Windows系统、或是重装Windows系统
    Navicat for MySQL11--使用经验
    Eclipse字体颜色的设置方法
    5.5树和森林
    5.2二叉树
    3.3队列
    3.1栈
    2.3线性表的链式存储结构
  • 原文地址:https://www.cnblogs.com/xixi3/p/12371787.html
Copyright © 2011-2022 走看看