PHP特性总结(有空更新)
preg_match绕过
数组绕过
preg_match只能处理字符串,当传入的subject是数组时会返回false
PCRE回溯次数限制
参考p神文章:https://www.leavesongs.com/PENETRATION/use-pcre-backtrack-limit-to-bypass-restrict.html
intval函数
非空数组
结合例题
<?php include("flag.php"); highlight_file(__FILE__); if(isset($_GET['num'])){ $num = $_GET['num']; if(preg_match("/[0-9]/", $num)){ die("no no no!"); } if(intval($num)){ echo $flag; } }
payload:
url?num[]=1
无意间尝试发现 url?num[] 也能通过
feng师傅解答了这个问题
原来php还是会创建一个大小为1的数组。
空格
==(等)和===(恒等)的区别
== 只进行数值判断
=== 进行数值加变量类型判断
科学计数法
1e5 == 100000
进制转换
0x117c == 4476
010574 == 4476
0b1000101111100 == 4476