一、web89
看了下源码,是要传一个num,但是0-9都被过滤了
有两函数不认识搜一下
然后在前面见过preg_match是一个正则匹配式,又去了解了一下,数字被过滤了,那可以考虑一下数组绕过(看的别人的,hhh)
随便传一个数组得到flag
二、web90
分析代码,和刚才那个差不多,但是出现了一个===,还有intval函数的用法还是不太会,再查一下
传入八进制得到flag
试一下字母,也可以得到,然后从别的文章中了解到这个叫弱命令
三、web91
开始分析代码咯(从大佬博客摘抄的)
i
不区分(ignore)大小写
m
多(more)行匹配
若存在换行\n并且有开始^或结束$符的情况下,
将以换行为分隔符,逐行进行匹配
$str = "abc\nabc";
$preg = "/^abc$/m";
preg_match($preg, $str,$matchs);
这样其实是符合正则表达式的,因为匹配的时候 先是匹配换行符前面的,接着匹配换行符后面的,两个都是abc所以可以通过正则表达式。
s
特殊字符圆点 . 中包含换行符
默认的圆点 . 是匹配除换行符 \n 之外的任何单字符,加上s之后, .包含换行符
$str = "abggab\nacbs";
$preg = "/b./s";
preg_match_all($preg, $str,$matchs);
这样匹配到的有三个 bg b\n bs
g
全局匹配,查找所有匹配项
A
强制从目标字符串开头匹配;
D
如果使用$限制结尾字符,则不允许结尾有换行;
e
配合函数preg_replace()使用, 可以把匹配来的字符串当作正则表达式执行;
有这么详细的解释,再不理解就有点说不过去了,hhh