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