1
hxsf 2016-11-24 13:40:20 +08:00 via iPhone
不说原始需求。正则没法写。
你这正则还能匹配一堆不在你例子里的东西呢 |
2
avatar70t 2016-11-24 13:48:19 +08:00
看你的字面意思就是要匹配一个点,那就
.*\..* |
3
raysonx 2016-11-24 13:49:29 +08:00
(xxxasdfs a"\."bc"\."def"\."g\(\);")|(xxxasdfs abc"\."def"\."g\(\);")|(xxxasdfs abcdef"\."g\(\);" )
|
4
raysonx 2016-11-24 13:50:26 +08:00
完全滿足題主描述的需求(逃)。
|
6
nilai OP @hxsf 我这需求就是检查 php 代码中利用拼接生成的函数 ,比如查找后门什么的,
比如 eval() 函数 在 php 中就可以变形为 $str = "e"."v"."a"."l"; $str = "ev"."al"; $str = "eva"."l";等等。 但是我又不能直接查 eval 关键字, 误报太多。 只想查询这种通过字符串拼接的函数。 这就是需求,看有什么好的实现方式没? |
7
imn1 2016-11-24 14:23:48 +08:00
其实没搞清你的需求
那三行不都是 xxxasdfs 开头的么? ^xxxasdfs.+$ 不就行了? |
8
xycool 2016-11-24 14:26:19 +08:00
|
9
DiamondbacK 2016-11-24 14:40:22 +08:00
先匹配出所有引号对中的字符串,然后把它们拼接起来,最后通过该字符串的特征来进行过滤。
|
11
mytsing520 2016-11-24 16:44:47 +08:00
先不说别的,楼主的头像……
|
12
Orzzzz 2016-11-24 18:08:26 +08:00
@mytsing520 QAQ
|
14
mcfog 2016-11-24 18:46:59 +08:00
@nilai
楼主你来匹配一下这个试试 $func = implode(md5('z')[2], [chr(101) . base64_decode('dg=='), str_rot13('y')]); //eval |
15
larsenlouis 2016-11-24 19:10:51 +08:00
Sublime 测试通过
xxxasdfs\s((a\")|(abc\")|(abcdef\")){1}(\.\"bc\"){0,1}(\.\"def\"){0,1}\.\"g\(\);\" |
16
sagaxu 2016-11-26 18:44:07 +08:00
正则没用的,他可以写"\x65\x76\x61\x6c",还可以用其它很多方式在运行时生成,目前唯一靠谱的手段,就是比对每个文件的 hash 值,只要不一致,管它有没有问题,一律视为被污染过。被挂过
马 .-' _..`. / .'_.'.' | .' (.)`. ;' ,_ `. .--.__________.' ; `.;-' | ./ / | | / `..'`-._ _____, ..' / | | | |\ \ / /| | | | \ \ / / | | | | \ \ /_/ |_| |_| \_\ |__\ |__\ |__\ |__\ 的机器,必须离线格盘重装系统,方能清除彻底。 |