%0a绕过XSS防御-poc

时间:2020-04-12
本文章向大家介绍%0a绕过XSS防御-poc,主要包括%0a绕过XSS防御-poc使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

在基于PCRE实现的正则引擎中,我们常使用“m表示multi-line、s表示single-line”。

multi-line表示按行来匹配正则,可以理解为以换行符为切割,对每行进行正则匹配然后进行or运算出结果。
中single-line的意思是将待匹配的文本视为一行,换行符不再作为“换行”的标志。

这在日常使用中也经常会出现由首尾界定符产生的小bug,比如下面这一个。

<?php 

if(preg_match('/^a[a-z]+z$/m', $_GET['input'])) {   //匹配a开头 z结尾

    echo $_GET['input']; 

}

正则匹配中我们常使用`^`和`$`来界定正则匹配的首尾,但这两个的符号本身的含义其实是代表了“行的开头和结尾”,也就意味着如果你输入一个%0a换行,后面就可以输入任何字符也能完成匹配。

比如上面的代码本身的含义可能是:用户输入一个以a开头,以z结尾的中间可以有若干字母的字符串。但因为指定了m修饰符,导致用户可以传入:

input=abcz%0a<svg%20onload=alert(1)>

来绕过检测。   有些地方是可以有效的。

原文地址:https://www.cnblogs.com/Qiuzhiyu/p/12687756.html