[安全]复现urlcode编码绕过xss限制两个demo

demo1:

","'"), '', $xss);
echo "";
?>

问题描述

在页面内进行弹窗(反射型xss漏洞的特征)


解决方案:

题目利用replace函数将常见的"(",")","&","\\","<",">","'"都替换成了空格符号,而想进行弹窗操作需要利用到οnerrοr="alert(xxx)"函数。最关键的问题在于怎么绕过对于括号的限制。我们可以利用URLcode编码将括号转变为%28和%29,而URLcode编码会自动将%28和%29识别为括号,又会被限制,我们可以将%转换为相应的%25

[安全]复现urlcode编码绕过xss限制两个demo_第1张图片

 而这时浏览器并未将%28和%29识别过来,原因是onerror函数为一个JS函数,在JS中是不允许编码符号的,就是在onerror内部不允许进行符号的编码。故无法进行括号的编码。

解决办法是location函数来解决此问题,其可以将右侧的值转换为变量,而在JS中变量是可以进行编码的,利用JavaScript伪协议如下

[安全]复现urlcode编码绕过xss限制两个demo_第2张图片


demo2:

","'"), '', $xss);
if (preg_match('/(script|document|cookie|eval|setTimeout|alert)/', $xss)) {
    exit('bad');
}
echo "";
?>

解决:

此问题将上一题目进行升级,将script,alert进行限制。我们可以利用拼接字符串的形式进行绕过

只需要把urlcode无法识别的+转换为对应的%2b即可


[安全]复现urlcode编码绕过xss限制两个demo_第3张图片

你可能感兴趣的:(安全,xss,前端,网络,安全)