PHP特性
preg_match()函数
1.preg_match()无法处理数组,当需要绕过此函数时可以在参数前增加数组符号即可绕过。
2.preg_match()内会增加一些形态表示过滤的范围。
1 | 例如:preg_match('/^php/im',$a) |
一共有6种类型
(1):i
不区分大小写。
(2):m
多行匹配,若存在换行符/n并且有开始^或结束$符的情况下,将以换行为分隔符,逐行进行匹配。
(3):s
特殊字符圆点.中包含换行符.默认的圆点.是匹配除换行符\n之外的任何单字符,加上s之后,.包含换行符。
(4):A
强制从目标字符串开头匹配
(5):D
如果使用$限制结束字符,则不允许结尾有换行符。
(6):e
配合函数preg_replace使用,可以把匹配来的字符串当作正则表达式来执行。
intval()函数
1.intval()函数用于获取变量的整数值。
2.intval($t,$f)
说明:
$t是要进行转换的值
$f转化所使用的进制
如果$f是0,则通过检测$t的格式来决定使用的进制
如果包含了0x的前缀,使用16进制(hex);
如果使用0开头,使用8进制
否则使用十进制。
(在参数传给载体之前,php会将运算结果传入参数载体所以科学计数法也可绕过)
intval函数收到内收到字母就会停止读取。
22e2=22*(10^2)=2200.0而intval收到的是22e2反馈22
关于强比较的绕过
强比较的符号是‘===’要求一般是左右参数的值相等并且类型相同
例如左边是int类型,右边即一定需要是int类型才能成立
strpos()函数
strpos($f,$t)
查找字符串在另一字符串中第一次出现的位置
说明:
$f是接受检测的字符串
$t是检测的字符或者字符串
例如strops(“0123”,”1”)
检测结果是1,也就是字符串的第二个位置(数字是从0开始数)
highlight_file()
此函数可显示指定文件内容
可以用绝对路径,相对路径,php伪协议
1 | ?u=/var/www/html/flag.php |
md5()
md5无法处理数组
当有md5($a)===md5($b)时
可以a[]=1 & b[]=2绕过
1 | a=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2 |
出现正则绕过可以使用这个进行简单的查看过滤字母是什么
1 | <?php |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Nebula的博客!