这道题说实话,我是不会的,,,,因为我对php函数中的正则函数preg_match()不太熟,但俗话说:哪里不会点哪里---
所以,在我搜索其他博客后,也算是弄懂了preg_match函数内匹配的东西了:
<?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);
}
?>
/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i
首先 /key ----> 匹配key key
. ------> 任意数字 1
*key --------> *是重复次数,即key的重复次数 key
. ----------> 任意数字 2
{4,7} --------> 前面或是后面重复次数为4~7次 2222
key: --------> key:
\/ --------> 转义/ /
. --------> 3
\/ --------> /
(.*key) -----> key
[a-z] -------> 匹配a~z a
[[:punct:]] -------> 任意字符 @
/i -----------> 不区分大小写
综上所述:payload index.php?id=key1key22222key:/3/keya@
即得flag