BugKuCtf中套路满满的题-------字符?正则

本文深入解析PHP中preg_match函数的使用,通过一个具体示例详细解释了正则表达式的各部分功能,包括匹配模式、重复次数、字符集等,帮助读者理解并掌握preg_match函数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这道题说实话,我是不会的,,,,因为我对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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值