字符?正则?
100
字符?正则?
打开链接是一段代码
<?php
highlight_file('2.php');
$key='KEY{********************************}';
$IM= preg_match("/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match);
if( $IM ){
die('key is: '.$key);
}
?>
来分析分析
1. preg_match (要搜索的模式,字符串,参数) 在字符串里搜索符合 要搜索的模式 的字符,并返回给参数。
举个栗子:
<?php
// 从URL中获取主机名称
preg_match('@^(?:http://)?([^/]+)@i',
"http://www.runoob.com/index.html", $matches);
$host = $matches[1]; //www.runoob.com
// 获取主机名称的后面两部分
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
echo "domain name is: {$matches[0]}\n";
?>
返回结果:
domain name is: runoob.com
2. trim(字符串,字符) 移除字符串两侧的空白字符或其他预定义字符。举个栗子:
<?php
$str = "Hello World!";
echo $str . "<br>";
echo trim($str,"Hed!");
?>
执行结果:
Hello World!
llo Worl
3. 接着来看正则表达式 (更多:https://blog.csdn.net/qq_26090065/article/details/81606045)
/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i
. 匹配除 "\n" 之外的任何单个字符
* 匹配它前面的表达式0次或多次,等价于{0,}
{4,7} 最少匹配 4 次且最多匹配 7 次,结合前面的 . 也就是匹配 4 到 7 个任意字符
\/ 匹配 / ,这里的 \ 是为了转义
[a-z] 匹配所有小写字母
[:punct:] 匹配任何标点符号
/i 表示不分大小写
总体来说,就是通过 id 传参,并且要符合上面的正则表达式,key就会显示,构造payload如下:
key 粗来了