为何PCRE正则解析常受限,能否绕回溯次数限制解析长尾词?

2026-04-06 07:510阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

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

为何PCRE正则解析常受限,能否绕回溯次数限制解析长尾词?

目录+ 正则表达式是什么+ 回溯的过程是怎样的+ PCRE另一种错误的用法+ 修正方法+ 本次Code-Breaking Puzzles中我遇到了一道看似很简单的题目,将其代码简化如下:+ ?phpfunction is_php($data) { return preg_match('/\bphp\b/i', $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;,其拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串决定执行哪个状态的迁移。

阅读全文
标签:正则解析

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

为何PCRE正则解析常受限,能否绕回溯次数限制解析长尾词?

目录+ 正则表达式是什么+ 回溯的过程是怎样的+ PCRE另一种错误的用法+ 修正方法+ 本次Code-Breaking Puzzles中我遇到了一道看似很简单的题目,将其代码简化如下:+ ?phpfunction is_php($data) { return preg_match('/\bphp\b/i', $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;,其拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串决定执行哪个状态的迁移。

阅读全文
标签:正则解析