bugku No one knows regex better than me

error_reporting(0)表示不报告错误

然后用$_REQUEST传zero和first,second等于zero.first

second要包括/Yeedo|wants|a|girl|friend|or|a|flag/里面的一个,不分大小写。

key等于second等于zero.first

key不能有..或flag

third等于first

前面三个数字是八进制,最后一个数字是十六进制

\nml,如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。

\xn,匹配 n,其中 n 为十六进制转义值。

转换为十进制是46 112 104 112,asscll意思是 .php

substr是截取字符,这个从第五个字符开始截取

zero用base64解码,并且提示说flag在flag.php.

所以我们最后要构造出flag.php

而第一个if会把flag过滤,又考虑到最后是base64解码的zero和end构成。

所以flag就用base64编码,传到zero中

由于第二个if把..过滤了,直接在first中传入.php后,second就变成了flag..php,就被过滤了。

再加上substr截取,就要在first之前加入四个字符并且这四个字符必须是这里面的/Yeedo|wants|a|girl|friend|or|a|flag/

又因为他不分大小写,所以直接把这四个字符定为FLAG

再用或(|)把FLAG和.php组合即可

x|y,匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。

所以构建?zero=ZmxhZw==&first=FLAG|.php

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值