1

所以在过去的几个小时里,我一直在尝试构建一个正则表达式,我开始疯狂地思考这是否可能或值得疯狂。

我有一个脚本可以扫描 PHP 文件,检查已知恶意文件的 MD5 和以及某些字符串。最近我遇到了一些文件,他们没有在 PHP 文件中使用 base64_decode,而是使用变量并将其连接起来,这样扫描仪就不会接收到它。

例如,这是我发现的最新示例:

$a='bas'.'e6'.'4_d'.'ecode';eval($a

因此,由于扫描仪搜索 base64_decode 这个文件没有被拾起,因为他们使用 PHP 将 base64_decode 连接到一个变量中,然后调用该变量。

请原谅我,因为我刚刚开始使用正则表达式,但是甚至可以使用正则表达式搜索类似的东西吗?我的意思是,我理解并且能够得到一个匹配那个确切的正则表达式,但是如果他们使用这个来代替:

$a='b'.'ase'.'64_d'.'ecode';eval($a

它不会被拾取,因为正则表达式正在寻找 ' 然后 b 然后 a 等等。

我已经加了

(eval)\(\$[a-z]

要给我发送一封电子邮件作为检查文件的通知,我必须让它运行几天,看看出现了多少误报,但我主要关心的是 base64_decode

如果有人可以为我阐明这一点并指出我正确的方向,我将不胜感激。

谢谢!!

4

1 回答 1

1

您可以使用此正则表达式:

b\W*a\W*s\W*e\W*6\W*4\W*_\W*d\W*e\W*c\W*o\W*d\W*e

它搜索base64_decode任何散布的非字母数字字符。

于 2013-10-10T22:15:13.723 回答