(1)修饰符
i————执行对大小写不敏感的匹配。
g————执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m————执行多行匹配。
(2)括号()[]{}:用于查找一定范围的字符串
(x|y)————匹配圆括号之间的x或y
[abc]————匹配方括号之间的任意字符
[0-9]————匹配方括号之间0-9之内数字
[a-zA-Z]————匹配26个大小写英文字母
{2,9}————匹配前一字符至少2次,最多9次
{3}————匹配前一字符3次
(3)其他字符
.—————匹配任意字符1个
*————匹配前1个字符0个或多个
.*————匹配任意字符0个或多个
\————转义后面的1个字符为普通字符
<?php
$key='flag{*****************************}'; $Regular= preg_match("/zkaq.*key.{2,9}:\/.*\/(key*key)/i", trim($_GET["id"]), $match);
if( $Regular){
die('key: '.$key);
}
匹配GET的传参,并去掉字符串两侧的空白字符或其他预定义字符(trim),将匹配结果并赋值给match,再赋值给Regular;当Regular有值时,输出key
trim————移除字符串两侧的空白字符或其他预定义字符
$_GET["id"]————获取get传入的id的值
/zkaq————斜杠表示此处之后是正则表达式,zkaq表示结果中含有zkaq
.*————为通配符,可以代表任意字符,但不包括换行符。此处代表0个或多个任意字符
.{2,9}————.为通配符,代表任意一个字符,{}为限定符, .{2,9}代表任意2-9个任意字符
:————为普通字符,代表结果中含有:
\/————反斜杠为转义字符,作用是将第二个字符/转变成普通字符解释
.*————为通配符,同上
\/————反斜杠为转义字符,同上
(key*key)————()代表括号内部为一个整体,*代表匹配前一个字符0次或者多次
/i————表示不区分大小写
id=zkaqkEYoo://kekey
id=zkaqkEYoo://kEkeY
id=zkaqkEYoo:/0123456789/kEkeY
id=zkaqkEY123456789:/0123456789/kEkeY
id=zkaqkEY123456789:/0123456789/kEkeY
id=zkaqkEY123456789:/0123456789/kEkeY
key: flag{regular\_god\_code}
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.