如何通过PCRE正则表达式实现回溯次数绕过安全限制的解析?

更新于
2026-09-28 19:55:57
2阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1557个文字,预计阅读时间需要7分钟。

如何通过PCRE正则表达式实现回溯次数绕过安全限制的解析?

目录+ 正则表达式是什么?+ 回溯的过称是怎样的?+ PCRE另一种错误的用法+ 修正方法+ 本次Code-Breaking Puzzles中我遇到了一道看似非常简单的题目,将其代码简化如下:

phpfunction is_php($data) { return preg_match('/^php/', $data);}

目录
  • 正则表达式是什么
  • 回溯的过程是怎样的
  • PCRE另一种错误的用法
  • 修复方法

这次Code-Breaking Puzzles中我出了一道看似很简单的题目,将其代码简化如下:

<?php function is_php($data){ return preg_match('/<\?.*[(`;?>].*/is', $data); } if(!is_php($input)) { // fwrite($f, $input); ... }

大意是判断一下用户输入的内容有没有PHP代码,如果没有,则写入文件。这种时候,如何绕过is_php()函数来写入webshell呢?

这道题看似简单,深究其原理,还是值得写一篇文章的。

正则表达式是什么

正则表达式是一个可以被“有限状态自动机”接受的语言类。

“有限状态自动机&rdquo;,其拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串决定执行哪个状态的迁移。

阅读全文
标签:正则解析

本文共计1557个文字,预计阅读时间需要7分钟。

如何通过PCRE正则表达式实现回溯次数绕过安全限制的解析?

目录+ 正则表达式是什么?+ 回溯的过称是怎样的?+ PCRE另一种错误的用法+ 修正方法+ 本次Code-Breaking Puzzles中我遇到了一道看似非常简单的题目,将其代码简化如下:

phpfunction is_php($data) { return preg_match('/^php/', $data);}

目录
  • 正则表达式是什么
  • 回溯的过程是怎样的
  • PCRE另一种错误的用法
  • 修复方法

这次Code-Breaking Puzzles中我出了一道看似很简单的题目,将其代码简化如下:

<?php function is_php($data){ return preg_match('/<\?.*[(`;?>].*/is', $data); } if(!is_php($input)) { // fwrite($f, $input); ... }

大意是判断一下用户输入的内容有没有PHP代码,如果没有,则写入文件。这种时候,如何绕过is_php()函数来写入webshell呢?

这道题看似简单,深究其原理,还是值得写一篇文章的。

正则表达式是什么

正则表达式是一个可以被“有限状态自动机”接受的语言类。

“有限状态自动机&rdquo;,其拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串决定执行哪个状态的迁移。

阅读全文
标签:正则解析