preg_match函数

数组绕过
preg_match只能处理字符串,当传入的subject是数组时会返回false
PCRE回溯次数限制
pcre.backtrack_limit给pcre设定了一个回溯次数上限,默认为1000000,如果回溯次数超过这个数字,preg_match会返回false
具体分析:
https://www.codercto.com/a/52693.html
https://www.laruence.com/2010/06/08/1579.html
利用payload:
payload+’a’*1000000
换行符
.不匹配换行符
1 | if (preg_match('/^.*(flag).*$/', $json)) { |
绕过payload:$json=\nflag$json=%0aflag
$会忽略结尾的换行符
1 | if (preg_match('/^flag$/', $_GET['a']) && $_GET['a'] !== 'flag') { |
payload:?a=flag%0a