我正在创建一个XSS扫描程序,现在我想知道字符串的输出位置。
可能是,
<h2>string</h2>
<h2 class=string></h2>
现在我需要知道它属于哪种情况。如果我浏览所有标签及其所有属性,那将会非常缓慢,所以我需要更快的方式。
有什么建议吗?运行perl
P.S string
经过精心设计,不会破坏任何地方的HTML结构。
答案 0 :(得分:0)
我不确定我是否理解你的问题,但这是我尝试回答的问题。
此代码检查$string
是否属于属性/标记中唯一的内容,例如<h2>string</h2>
而不是<h2>hello string</h2>
。
print "String '$string' found between HTML tags.\n" if ($file =~ /<(\w+).*?>$string<\/\1>/);
print "String '$string' found in HTML attribute.\n" if ($file =~ /<\w+ (?:.+? )?\w+="$string"(?: .+?)?>/);
注意如果在两种情况下都出现字符串,print
将会触发,例如<h2 class=string>string</h2>
。
如果您需要解释正则表达式的作用,请发表评论并编辑我的答案。
这假设整个HTML文件位于$file
,字符串位于$string
。第一个可以通过以下方式实现:
$FILE = 'C:/path/to/file.html';
open FILE or die "Cannot open $FILE for read: $!";
while (<FILE>) {
$file .= $_;
}
close FILE;