前言
这篇文章,主要是补充一些其他的。
“圆括号”
假设过滤了()
,怎么进行弹框呢?如果仅仅只考虑这点,可执行payload还满多的。
最简单的,用反引号代替圆括号。
<img src=x onerror=alert`1`>
引入伪协议,以及location,然后进行编码拆分。
<img src=1 onerror=alert%28%29>
<img src=1 onerror=location="javascript:"+"aler"+"t%281%29">
这里引用P牛文章的过滤代码,利用这个代码来测试学习。
<?php
header('X-XSS-Protection: 0');
$xss = isset($_GET['xss'])?$_GET['xss']:'';
$xss = str_replace(array("(",")","&","\\","<",">","'","`"), '', $xss);
echo "<img src=\"{$xss}\">";
?>
我还特地过滤了反引号,不然用反引号代替括号直接弹。
来个好玩的例子,这个例子来自XSS挑战第一期Writeup
的一个payload。
我们既然不能用()
,很多人第一思路肯定是url编码()
,url编码为%28%29
,而上面那个例子,通过赋值变量a等于字符串"%2"
,巧妙通过+拼接字符串(1)
。
成功弹窗。
Throw
除了上面拼接编码的操作外,我们不得不提到thorw
,在文档“Modern Web Application Firewalls Fingerprinting and Bypassing XSS Filters”
中在提到了一个很有趣的话题。那就是在圆括号被过滤的情况下,如何去执行javascript,文中给出的答案是。
<a onmouseover="javascript:window.onerror=alert;throw 1>
throw
语句用来抛出一个用户自定义的异常,而使用onerror
来捕获异常,来完成弹窗这个操作。
看个例子:
伪协议执行,onerror
捕获的异常,成功弹框。
将top
赋值给_
,所以后面2个_
等价于top
,除了top
,还可以用self parent frames content window
其中一个代替。
弹框。
这里引用了 IE8/IE9 filter
的一个技巧(%00
)。
在IE下会弹出一个错误。
location
这段会介绍,利用lacation对象
属性相关的利用,先来上张图。
这张图,清晰的展示了,lacation对象
不同的属性在网页url中的体现。
这里我要介绍的是location.search
。
查看上面的文档,location.search
设置或返回当前 URL 的查询部分即问号?
之后的部分,如果你不太理解,那我们来看个小例子下。
假设我们现在的网页url为http://localhost/1.html?id=s9mf#Test
。那么在控制台输出location.search
,返回结果会是怎样呢?
返回结果为?id=s9mf
,即以?
之后部分,而#
之后部分属于location
对象的hash属性
所控制,所以不会在控制台显示。
location.search
可以用数组键名索引
的方式来访问设置的?
之后的部分。
利用上述特性,把(1)
放在url查询部分,定义a变量赋值为location.search
,再用location.search
以数组键名索引的方式取回来(1)
。
成功弹框
利用注释和location.hash,把alert(233)放在#后面,再调用回来。
弹框~
eval执行,IE下报错弹框
duang~
This
在介绍this前,我们需要把前面的测试代码修改下,使其在<input>标签内。
<?php
header('X-XSS-Protection: 0');
$xss = isset($_GET['xss'])?$_GET['xss']:'';
$xss = str_replace(array("(",")","&","\\","<",">","'","`"), '', $xss);
echo "<input value=\"$xss\">";
?>
还是和以前的过滤条件。
this
总是返回一个对象,简单说,就是返回属性或方法“当前”所在的对象。
alert
后面跟着的是url编码的()
,name被赋值,this.name
返回一个对象,用onfocus
事件在对象获得焦点时发生。
duang~
this结合函数<svg onload="a(this);function a()(alert(1))">
。
感谢老哥分享
这么真实的嘛!
我以为这篇图片掉了不会过,所以把图片换成sm图床后,重新发了一篇。结果这篇用微博图床的发出来了...
我在Github也有保存,要看的老歌可以看下。。。
https://github.com/S9MF/Xss_Test/blob/master/waf/补充(2).md
老哥图片好像全挂了
第一张图片是这个,我使用的是微博的图床,最近据说开启外链,现在改用sm图床。