字符?正则?


<?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);
}
?> 
一。先看最外边的//i,//代表定界符,你限定的条件都在这个定界符里面,i是不区分大小写    
二。来看  /key  首先就是得有key这三个字母,不一定是一开始就是key  ?id=key
三。 /key.*   这里的.是可以匹配任何字符,所以你随便打个就行,我这里打的a,又因为后边有个  *(匹配前边的字母0次或者多次),所以你可以继续多打几个啊或者不打  ?id=keyaa    
四。/key.*key, 继续分析,多加了个key, ?id=keyaakey,继续往后   /key.*key.{4,7} 代表任意匹配一个字符并且出现4-7次,那就打四个a好了 ?id=keyaakeyaaaa
五。/key.*key.{4,7}key: 加上 key:   ?id=keyaakeyaaaakey:
六:/key.*key.{4,7}key:\/.\/   \代表了转义,所以/不在代表了界定符,直接看成/./  所以/a/即可,?id=keyaakeyaaaakey:/a/   
七:/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]    (.*key) => akey   [a-z]代表随便一个小写字母,a就可以,后边那个是标点符号,比如,
?id=keyaakeyaaaakey:/a/akeya,
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄