我正在创建一个 XSS 扫描器,现在我想知道字符串的输出位置。
它可能是,
- 在 HTML 标签之间,例如
<h2>string</h2>
- 标签的属性,例如
<h2 class=string></h2>
现在我需要知道它属于哪个案例。如果我浏览所有标签及其所有属性,它会非常缓慢,所以我需要一种更快的方法。
有什么建议吗?运行 perl
PSstring
经过精心制作,不会破坏任何地方的HTML结构。
我正在创建一个 XSS 扫描器,现在我想知道字符串的输出位置。
它可能是,
<h2>string</h2>
<h2 class=string></h2>
现在我需要知道它属于哪个案例。如果我浏览所有标签及其所有属性,它会非常缓慢,所以我需要一种更快的方法。
有什么建议吗?运行 perl
PSstring
经过精心制作,不会破坏任何地方的HTML结构。
我不确定我是否理解您的问题,但这是我试图回答的问题。此代码检查是否$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;