zoukankan      html  css  js  c++  java
  • xss攻击的分类

    1.反射型XSS

    原理:

    通过在页面上植入恶意链接,诱使用户点击,执行js脚本,所谓反射型XSS就是将用户输入的数据(恶意用户输入的js脚本),“反射”到浏览器执行。

    实例:

    php源码:

    <?php
    
    $input = $_GET("param");
    
    echo "<div>".$input."</div>";
    
    ?>

    构造xsspayload

    http://127.0.0.1/test.php?param=<script>alert(/xss/)</script>

    2.存储性XSS

    原理:此类XSS漏洞是指,用户输入的数据(恶意代码)可以“存储”在服务端,只要有人访问这个包含有存储型XSS代码的页面,XSS脚本就会在他们的浏览器中执行,这种XSS具有很强的稳定性。所以也被称做,“持久型XSS”。

    实例:

    通过js脚本获取cookie值,当然,在实际应用中,应该是通过植入链接来将js脚本植入的。

    <html>
    <head>
    <script type="text/javascript">
    function getCookie(c_name)
    {
    if (document.cookie.length>0)
      {
      c_start=document.cookie.indexOf(c_name + "=")
      if (c_start!=-1)
        { 
        c_start=c_start + c_name.length+1 
        c_end=document.cookie.indexOf(";",c_start)
        if (c_end==-1) c_end=document.cookie.length
        return unescape(document.cookie.substring(c_start,c_end))
        } 
      }
    return ""
    }
    
    function setCookie(c_name,value,expiredays)
    {
    var exdate=new Date()
    exdate.setDate(exdate.getDate()+expiredays)
    document.cookie=c_name+ "=" +escape(value)+
    ((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
    }
    
    function checkCookie()
    {
    username=getCookie('username')
    if (username!=null && username!="")
      {alert('Welcome again '+username+'!')}
    else 
      {
      username=prompt('Please enter your name:',"")
      if (username!=null && username!="")
        {
        setCookie('username',username,365)
        }
      }
      alert(document.cookie)
    }
    </script>
    </head>
    
    <body onLoad="checkCookie()">
    </body>
    </html>

    3.DOM型XSS

    原理:类似于反射型XSS,但是,这种XSS攻击的实现是通过对DOM树的修改而实现的。

    实例:

    <script>
    function test(){
        var str=document.getElementById("text").value;
      document.getElementById("t").innerHTML = "<a href='"+str+"'>testLink</a>";
    }
    </script>
    
    <div id="t"></div>
    <input type="text" id="text" value=""/>
    <input type="button" id="s" value="write" onclick="test()"/>

     构造payload

    ' onclick=alert(/xss1/) //

    或者

    ‘><img src=# onerror=alert(/XSS2/) /><'

    就可以顺利弹框了。

  • 相关阅读:
    android 如何在手机上 安装两个同样的app
    Ubuntu 16.04 安装Gitlab
    VScode开发C++常用插件
    过滤text字段为空的数据
    ES标签搜索并解决评分排序问题
    3
    2
    1
    9
    Maven3种打包方式
  • 原文地址:https://www.cnblogs.com/zhang293/p/7868744.html
Copyright © 2011-2022 走看看