Bugku 字符?正则?

打开环境如下

是一个正则匹配的题目,要求我们通过get传进id的值要符合正则匹配的要求

下面是这一题里面遇到的字符意思

/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i,我们先一步步拆开看

key:没有意义,普通字符

.*key:对key进行贪婪匹配,如aaakey,abcdkey都会被匹配成key

.{4,7}:最少匹配 4次且最多匹配 7 次,但是前面有了“.”,所以完整意义是最少匹配 4次且最多匹配 7 次任意字符。

key:都是普通字符

\/:标记/为原意字符

.:匹配任意字符除换行符\n

\/:同上

()标记一个子表达式的开始和结束位置

.*key:同上

[a-z]:匹配所有小写字母中的一个

[[:punct:]]:匹配任意标点符号

/i:不区分大小写

下面是常见的字符的正规说明

[ABC]

匹配 [...] 中的所有字符,例如 [aeiou] 匹配字符串 "google runoob taobao" 中所有的 e o u a 字母。

[^ABC]

匹配除了 [...] 中字符的所有字符,例如 [^aeiou] 匹配字符串 "google runoob taobao" 中除了 e o u a 字母的所有字母。

[A-Z]

[A-Z] 表示一个区间,匹配所有大写字母,[a-z] 表示所有小写字母。

.

匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r]。

[\s\S]

匹配所有。\s 是匹配所有空白符,包括换行,\S 非空白符,不包括换行。

\w

匹配字母、数字、下划线。等价于 [A-Za-z0-9_]

那么对照上面的分析,我们就可以一步步来构造符合它匹配规则的payload

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

可以是

?id=keyabcdkeyaaaakey:/a/abcdkeya;

?id=keyabddkeyaaaaakey:/a/abckeya;

等等

提交任意一个

得到flag

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值