当前位置: 首页 > news >正文

正则分组/php5版本下preg_replace /e模式下的代码执行

免责声明本文全部实验操作均在本人完全可控的自建本地靶场环境完成,文章仅用于网络安全原理学习与技术研究。 根据《中华人民共和国网络安全法》,未经授权对任何第三方系统进行探测、命令执行、文件写入等操作属于违法行为。

严禁复制、使用本文中的 Payload、代码应用到未获得授权的设备上。若读者将文中内容用于非法用途,一切法律责任由行为人本人承担,与本文作者无关。

正则分组

正则里,圆括号 () 就是捕获分组,

作用:把括号内部匹配到的文本 “抓取保存” 下来,后面可以用 \1、\2… 取出来复用。
\1 = 第 1 个()捕获到的内容
\2 = 第 2 个()捕获到的内容

$n 同样的作用
简单例子
正则:/(a)(b)/
(a) → 分组 1,负责匹配字符a
(b) → 分组 2,负责匹配字符b

\S

大写 S:匹配任意非空白字符

\s:小写s:匹配空白字符:换行符等

preg_replace

preg_reeplace($a,$b,$c)

a是要匹配的模式

b是要替换成什么

c是被搜索的字符串

/e模式举例子:

preg_replace('/(test)/e', 'md5("\1")', "aaa test bbb");

匹配到 test,分组 1 = test
模板md5("\1")把\1替换 → md5("test")
/e eval 执行 md5("test"),得到哈希字符串 098f6bcd4621d373cade4e832627
把原来的test替换成这个哈希,得到最终字符串:aaa 098f6bcd4621d373cade4e832627 bbb
eval 执行的是:md5("test")(填充完反向引用的替换片段)
eval不会去执行最后的完整字符串 aaa 098f6bcd4621d373cade4e832627 bbb

练习

在php的GET传参中会自动的把点替换为下划线_

<?php function complex($re, $str) { return preg_replace( '/(' . $re . ')/ei', 'strtolower("\\1")', $str ); } foreach($_GET as $re => $str) { echo complex($re, $str). "\n"; } function getFlag(){ @eval($_GET['cmd']); }

'/( ' . $re . ' )/ei' ------ 拼接正则(\S*)

strtolower -------将字符串转化为小写

/e修饰符,会把替换字符串当做 PHP 代码 eval 执行
preg_replace 处理过程:

两个反斜杠转义\
先把\1替换成捕获内容 → strtolower("Abc")
/e把这段字符串交给 eval 执行,运行 PHP 函数,得到结果 abc

用?\S*=phpinfo()

直接打印了

使用${}包裹

原理:正则(\S*)匹配${phpinfo()}整个------>\1===${phpinfo()}

于是把\1替换成strtolower("${phpinfo()}")

因为正则后面有/e,所以会把这个当 PHP 代码执行。

${}的作用是让 PHP 解析花括号里面的内容作为变量/表达式${表达式}:PHP 会解析花括号里的表达式。从而执行

比如$name =abc

echo $name 和echo "${a}"效果一样

思考:

换成?\S*=${getFlag()}&cmd=phpinfo();或者其他恶意代码的效果

防御

把"\\1"双引号换成单引号

http://www.cnnetsun.cn/news/4024936.html

相关文章:

  • Kimi LeetCode 3906. 统计网格路径中好整数的数目 Rust实现
  • maxGraph零基础入门:纯客户端JavaScript图表库,零成本5分钟画出可交互流程图
  • Portainer:Docker可视化Web管理面板的新手首选方案
  • 华硕笔记本控制权争夺战:G-Helper一天上手,性能、散热与续航全面解放
  • Dism++完整上手指南:免费清理系统垃圾、修复更新失败的终极优化工具,5分钟就能见效
  • 【Proteus仿真设计】基于stm32单片机的智能家居系统设计
  • Dify 企业级实验(03):事件驱动流水线——Webhook 与定时触发如何组成异步处理链?
  • 一条命令给 Win11 系统优化瘦身,Win11Debloat 把预装软件和广告一次清干净
  • Windows APK安装器完全指南:免模拟器在电脑上安装安卓应用
  • SOLIDWORKS 正版软件价格全解析:商业版、教育版、科研版报价指南
  • 相机缓冲数据三种数据格式(数组、指针new、vector)
  • 贵州微信网站建设全流程解析:中小企业如何利用私域流量实现低成本高增长
  • 预算不够不用全套打包!生产自动化与 AI 管理支持分开采购、分步落地
  • 永嘉网站建设几年才见效?资深从业者揭秘低成本高效获客真相
  • 深入解析南海网站建设报价背后的逻辑与行业内幕揭秘
  • 揭秘城乡规划建设网站背后的真相:为什么它不仅是信息枢纽更是城市发展的灵魂指南
  • 范县网站建设企业为何需要专业的数字化升级之路?本地老板必看攻略
  • 南阳网站建设价格揭秘:为什么有人几百元有人几万元?
  • 南京百度网站建设多少钱?深度解析中小企业如何通过南京百度网站建设实现低成本高效率获客与品牌升级
  • 铝基板营销型网站建设:从流量焦虑到成交转化的终极指南 如何打造高转化的B2B官网
  • 选择滨州正规网站建设公司避坑指南:从需求到上线的全流程深度解析与实操建议
  • 第24篇 · 从零到一,我的AI学习之路——复盘与给后来者的建议
  • 宝安商城网站建设怎么避坑:从零基础到爆款店铺的实战指南与真心话
  • 054、LSC镜头阴影校正的“网格密度悖论“——为什么16x16网格比32x32更实用?从DDR带宽与边缘伪影角度深度剖析
  • 网站技术防护建设情况深度解析:企业数字化转型的核心底线与实战策略
  • 告别模板泛滥,深度解析定制化信息化建设网站范本的构建逻辑与核心价值
  • 揭秘2024年电子商务网站建设考试核心考点与实战通关指南
  • 深入解析电子商务网站前台建设:打造高转化率的线上 storefront 实战指南
  • 网站建设外包兼职:普通人如何靠技能月入过万的底层逻辑与避坑指南
  • BiliTools速通指南:这款开源B站视频下载工具,一次搞定视频、弹幕与无损音乐