BugKu——字符?正则?小记

这是一个简单题,不过可以用来练练正项表达,小白所写,大佬见谅

在这里插入图片描述
进入链接

在这里插入图片描述
由代码知这是可以通过GET传参得到Flag(就是在地址栏操作),我们来看看题目的问题

/key.*key.{4,7}key:/./(.*key)[a-z][[:punct:]]/i

典型的正则表达式,显然问题的解决方案就是在地址栏传参,使得id符合正则表达式,即可得到flag
由于我这篇是新手食用篇,所以,我在此介绍一下正则表达式的基础相关知识

^:匹配一行字符串的开头
. : 匹配任意字符,除了换行符
[…]:匹配括号中的任一个,[amk] 匹配 ‘a’,‘m’或’k’
[^…]: 不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符
*:匹配0个或多个的表达式
+:匹配1个或多个的表达式
?:匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式

开始看题
/key.*key.{4,7}key:/./(.key)[a-z][[:punct:]]/i
我们将正则表达式拆开
/key
.

key
.{4,7}
key:
/
.
/
(.*key)
[a-z]
[[:punct:]]
/i
这样看的话是不是就清晰多了,开始匹配吧,/key,‘/’代表所有正项匹配的开始,key为固定不变的字符串
第一段匹配为 key

.是可以任意匹配一个字符,*是匹配前边的字母0次或者多次,所有.*就是可以输入任意个字符,这里我输入aaaa,接上面的匹配的字符串为 keyaaaa

key为字符串,匹配的就是key,接上面就是 keyaaakey

.{4,7}是匹配任意4—7个字符,我这里就就写为aaaaa,接上面就是 keyaaakeyaaaaa

“key:”也和key一样,就是多了:,接上面 keyaaakeyaaaaakey:

/中的“\”,是转义字符,因为“/”是代表所有正项匹配的开始,我们需要将它变成普通的“/”,所以就用“\”,接上面就是 keyaaakeyaaaaakey:/

.是代表任意一个字符,我这就用a,接上面keyaaakeyaaaaakey:/a

又有一个“/",接上面 keyaaakeyaaaaakey:/a/

(.*key)是代表任意个字符后加key,括号的的意义就是这个.*key优先组合,接上面 keyaaakeyaaaaakey:/a/aaakey

[a-z]代表任意在a到z一个小写字母,这里我就用a,接上面 keyaaakeyaaaaakey:/a/aaakeya

[[:punct:]]表达任意一个ASCLL标点字符,这里我用逗号“,”,接上面 keyaaakeyaaaaakey:/a/aaakeya,(,为英文状态下的逗号)

/i表示不分大小写

这里我匹配对应的正项式为 keyaaakeyaaaaakey:/a/aaakeya,

接下来我们就把我们匹配的式子传进id

在这里插入图片描述
在这里插入图片描述此题结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值