0

我正在创建一个 XSS 扫描器,现在我想知道字符串的输出位置。

它可能是,

  • 在 HTML 标签之间,例如<h2>string</h2>
  • 标签的属性,例如<h2 class=string></h2>

现在我需要知道它属于哪个案例。如果我浏览所有标签及其所有属性,它会非常缓慢,所以我需要一种更快的方法。

有什么建议吗?运行 perl

PSstring经过精心制作,不会破坏任何地方的HTML结构。

4

1 回答 1

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如果字符串在两种情况下都出现,则两个 s 都会触发,例如<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;
于 2013-10-20T19:51:01.540 回答