本文主要是介绍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
这篇关于bugku No one knows regex better than me的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!