文章总结: 本文分析了PHP中pregreplace函数的安全风险,重点指出当使用/e修饰符时,replacement参数会被当作PHP代码执行,从而产生代码执行漏洞。通过实验演示了如何利用该漏洞执行vardump和phpinfo等代码,并列举了其他常见危险函数。建议开发人员避免使用/e修饰符,并对用户输入进行严格过滤。 综合评分: 75 文章分类: 漏洞分析,WEB安全,代码审计,安全开发,PHP安全
危险函数之preg_replace函数
原创
建哥聊安全 建哥聊安全
建哥聊安全
2026年4月3日 08:41 湖南
免责声明:严格禁止对任何未授权系统/网络进行扫描、攻击或入侵。 禁止制作/传播恶意程序,禁止参与任何网络犯罪。如擅自将本文实验技术用于非法用途,一切法律后果及责任由行为人独立承担,与作者无关。
危险函数之preg_replace函数
实验目的
通过本实验,掌握命令执行漏洞产生的原因和利用方法,体验命令执行漏洞的利用过程。
实验环境
·操作机:Win10 用户名:Administrator 密码:Sangfor!7890
·靶机:Apache + PHP
·实验地址:http://ip/os/preg_replace.php
实验原理
应用程序有时需要调用一些执行命令的函数,由于服务器对代码中可执行的特殊函数入口没有做过滤,并且用户能够控制这些函数中的参数时,就可以将恶意命令拼接到正常命令中,从而造成命令执行攻击。 命令执行漏洞可以分为远程命令执行(代码执行)和系统命令执行两类,常见危险函数也分为两类:代码执行函数和命令执行函数。
PHP中常见代码执行函数:
array_map()
eval()
assert()
preg_replace()
call_user_func()
$a($b)动态函数
PHP中常见系统命令执行函数:
system()
exec()
shell_exec()
passthru()
popen()
反引号”`”
实验步骤
1、登录”Attack”操作机,打开浏览器,访问http://ip/os/preg_replace.php
2、在URL后拼接”?a=var_dump(array(1,2,3)),访问http://ip/os/preg_replace.php?a=var_dump(array(1,2,3)),执行代码
3、在URL后拼接”?a=phpinfo();”,访问http://ip/os/preg_replace.php?a=phpinfo(),查看执行效果
实验总结
通过本实验,掌握preg_replace函数的利用,成功实现了代码执行,体验了preg_replace函数实现代码执行的过程。preg_replace函数的作用是搜索subject中正则匹配pattern的部分,以replacement进行替换。pattern:要搜索的模式,可以是一个字符串或字符串数组。当pattern处存在一个“/e”修饰符时,$replacement的值会被当成php代码来执行。
往期文章:
危险函数之可变函数
快检查下你服务器中间件,存不存在这个漏洞
什么!!验证码就这样破解了?
安全基线之MongDB安全配置
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:建哥聊安全 建哥聊安全 建哥聊安全《危险函数之preg_replace函数》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论