php在过滤攻击和相关漏洞时,会内置一些函数来实现检测和过滤
案例一:过滤函数
1.=赋值 ==对比(不会对比类型) ===类型也会对比
缺陷:?x=1.0或?x=+1也都会输出flag,无法确定唯一性。
当换成===时只有?x=1才能输出flag
2.MD5函数缺陷绕过
因为两者md值前缀都为0e,当使用“==”是认为其相等
md5加密不了数组,返回null
3.intval缺陷饶过
intval()用于获取变量的整数值,转化为整数
0x29a:16进制的666
4.strpos() 函数绕过
strpos():查找xx在字符串中第一次出现的位置
%0a:换行
5.in_array第三个参数
相当于“==”绕过(若第三个函数不设置为“true)
6.preg_match函数绕过
preg_match():执行正则表达式
输入数组就是为了让preg_match过滤失效
7.str_replace函数
无法迭代循环,输入?s=sselectelect即可绕过
案例二:ctf考题
isset():判断变量是否存在
靶机:github.com/hongriSec/PHP-Audit-Labs