题目:
<?php
$key='flag{********************************}';
$Regular= preg_match("/zkaq.*key.{2,9}:\/.*\/(key*key)/i", trim($_GET["id"]), $match);
if( $Regular ){
die('key: '.$key);
}
理解题目:
flag被放在key变量中,正则表达式匹配GET请求中id的内容,trim函数去空格,匹配到的东西放到match变量中
如匹配到有次数,则输出key,key的值就是flag
所以核心就是正则表达式的理解
把正则表达式提取,拆分,理解
/zkaq.*key.{2,9}:\/.*\/(key*key)/i
/i 不区分大小写
zkaq zkap字符串
.* 任意字符串匹配任意次数
key key字符串
.{2,9} 任意字符,出现最少2次,最多9次
: 就是:的意思
\ / 转义/,意思就是输出字符串/
.* 任意字符串匹配任意次数
\ / 转义/,意思就是输出字符串/
(key*key) 语句合起来为一个整体,key字符串,k匹配任意次数,key字符串
所以按照要求写出正则表达式匹配的值
zkaqaaakeybbbb:/xxx/keyyyykey
拿到flag