掌控安全——正则表达式解题思路

解题思路:

题目:

<?php  
$key='flag{********************************}'; 
$Regular= preg_match("/zkaq.*key.{2,9}:\/.*\/(key*key)/i", trim($_GET["id"]), $match); 
if( $Regular ){  
  die('key: '.$key); 
} 

首先,看到flag放在变量 k e y 中 , 通 过 g e t 传 参 得 到 正 则 表 达 式 的 匹 配 值 放 在 变 量 key中,通过get传参得到正则表达式的匹配值放在变量 keygetRegular中,if语句中条件满足 R e g u l a r 的 匹 配 规 则 , 强 制 写 死 , 输 出 Regular的匹配规则,强制写死,输出 Regularkey,拿到flag。

接下来看正则表达式:

这里这里用了preg_match(正则表达式、匹配字符串、匹配到的值放入数组);

//是正则匹配模式的标志,/i是修饰符,不区分大小写,都去掉以后得到:

zkaq.*key.{2,9}:\/.*\/(key*key)

zkaq为字符照抄,.*匹配0个或多个任意字符,可以随便写个zhangsan,可以不写

zkaqzhangsankey.{2,9}:\/.*\/(key*key)

.{2,9}匹配任意字符,至少为2个,至多为9个,随便写123456

zkaqzhangsankey123456:\/.*\/(key*key)

\为转义字符,直接写/,.*可以不写,可以随便写

zkaqzhangsankey123456://(key*key)

(key**key)是一个整体,y匹配0个或多个y

zkaqzhangsankey123456://keykeywzyyds

构造id传参完成:

http://b-regex-1s.lab.aqlab.cn/?id=zkaqzhangsankey123456://keykeywzyyds

获取flag,提交

flag{regular_god_code}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值