复现urlcode编码绕过xss限制两个demo
后端源码:demo.php
<?php
header('X-XSS-Protection: 0');
$xss = isset($_GET['xss'])?$_GET['xss']:'';
$xss = str_replace(array("(",")","&","\\","<",">","'"), '', $xss);
echo "<img src=\"{$xss}\">";
?>
‘X-XSS-Protection: 0’ 的意思是关闭浏览器xss防护,因为以前chrome,Firefox都有xss防护机制
x
s
s
=
i
s
s
e
t
(
xss = isset(
xss=isset(_GET[‘xss’])?$_GET[‘xss’]:‘’ 是三元运算符,?前为判断条件当前面的值为真,则运行":“前的,为假运行”:"后的。
一般情况下:
防御1:
分析代码:首先在header的内容,目的是告诉服务器禁用XSS保护,使用的是get方法进行传参,传到的参数通过str_replace函数进行替换,将()& \ <> ’ 替换为空,起到过滤的作用,过滤后得到前台的页面展示。
防御2
进行绕过
location后面是跟的变量,后面是字符串的格式,那我们可以进行字符串的拼接,躲过这些受限制的字眼。已完成绕过。