JAVA-Exploit编写(5)--http-request库使用

发布于:2025-02-10 ⋅ 阅读:(11) ⋅ 点赞:(0)

目录

1.http-request简介

2. 依赖导入

3. GET请求方式

3.1 test.php

3.2 基本使用代码实现

 3.2 请求时请求参数URL编码实现

 3.3 携带多参数请求

3. Post请求方式

3.1 基本使用

3.2 携带单个参数请求 

3.3 携带多个参数请求

4. 设置代理请求 

4.1 方式一

4.2 方式二

1.http-request简介

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

2. 依赖导入

<dependency>
      <groupId>com.github.kevinsawicki</groupId>
      <artifactId>http-request</artifactId>
      <version>5.6</version>
</dependency>

3. GET请求方式

3.1 test.php

<?php
var_dump($_REQUEST);

3.2 基本使用代码实现

        相比于之前,实现是不是简单了很多

package com.deger.HttpRequest;

import com.github.kevinsawicki.http.HttpRequest;

public class HttpRequestTest {
    public static void main(String[] args) {
        //发送一个GET请求
        HttpRequest httpRequest = HttpRequest.get("http://127.0.0.1/test1.php?username=admin");
        //打印响应内容
        System.out.println(httpRequest.toString());
        //打印响应码
        System.out.println(httpRequest.code());
         //打印响应体
        // System.out.println(httpRequest.body());
    }
}

 3.2 请求时请求参数URL编码实现

//没有编码请求
 HttpRequest httpRequest = HttpRequest.get("http://127.0.0.1/test1.php?username=小鱼");
//url编码  在参数后增加一个true
HttpRequest httpRequest = HttpRequest.get("http://127.0.0.1/test.php?username=小鱼", true);

没有编码情况 

编码情况下:

 3.3 携带多参数请求

只需要在请求后添加参数即可

HttpRequest httpRequest = HttpRequest.get("http://127.0.0.1/test.php?username=小鱼", true,"age","21");

3. Post请求方式

3.1 基本使用

只改变了调用的方法为post

HttpRequest httpRequest = HttpRequest.post("http://127.0.0.1/test.php?username=小鱼");

3.2 携带单个参数请求 

HttpRequest httpRequest = HttpRequest.post("http://127.0.0.1/test.php").form("username","admin");

3.3 携带多个参数请求

 Map<String,String> data = new HashMap<>();
        data.put("sex","男");
        data.put("age","21");
        data.put("username","小鱼");

        HttpRequest httpRequest = HttpRequest.post("http://127.0.0.1/test.php").form(data);

4. 设置代理请求 

4.1 方式一

        通过下面这种方式在我自己的电脑使用是没有用的,同规格burp无法抓到包,目前没有发现原因,可以尝试使用一下.

System.setProperty("proxyHost","127.0.0.1");
System.setProperty("proxyPort","8888");
            //http头信息
            HttpRequest httpRequest = HttpRequest.post("http://127.0.0.1/test.php")
                  .connectTimeout(5*1000)
                  .readTimeout(5*1000)
                  .form(data);

4.2 方式二

通过在另一种方式找到解决方案,设置.useProxy("127.0.0.1", 9999)属性

注意:.form(data);需要放到所有的参数后,不然会出现报错

//http头信息
HttpRequest httpRequest = HttpRequest.post("http://127.0.0.1/test.php")
        .useProxy("127.0.0.1", 9999)
        .connectTimeout(5*1000)
        .readTimeout(5*1000)
        .header("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3")
        .form(data);