preg_match()绕过的问题总结

最近参加羊城杯,遇到了一道题本来的思路是绕过preg_match()函数读取secret.php文件,然后从secret.php中给的函数构造pop链使用反序列化的知识点进行命令执行,从而得到flag

但是问题是第一步就出现了问题,绕过preg_match()就绕不过去记录一下:
我搜索到的常用的绕过方法有:
1.数组绕过,即传入的参数为数组

源代码如下:

 

 

 效果:

 

 

成功绕过preg_match()

2.利用PCRE回溯次数限制绕过

源代码:

 

 

如何绕过呢,让回溯次数超过最大限制就可以使preg_match()函数返回false,从而绕过限制,中文的回溯次数在100万次就会崩溃,这个回溯保护使PHP为了防止关于正则表达式的DDOS

结果:

POC:

 

 

 

 

成功绕过了preg_match()

3.换行符绕过
.不会匹配换行符

源代码:

 

结果:

 

 成功绕过,Hacking attempt detected<br/><br/>没有输出

 

posted @ 2021-09-13 14:55  无据  阅读(7465)  评论(0编辑  收藏  举报