当前位置: 首页 > article >正文

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

目录

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);


http://www.kler.cn/a/508718.html

相关文章:

  • GPT-5 传言:一场正在幕后发生的 AI 变革
  • 一些常见的Java面试题及其答案
  • 测试工程师的linux 命令学习(持续更新中)
  • 【c++继承篇】--继承之道:在C++的世界中编织血脉与传承
  • Web3与加密技术的结合:增强个人隐私保护的未来趋势
  • 【C语言】_字符串拷贝函数strcpy
  • Python 爬虫:获取网页数据的 5 种方法
  • Maven在Win10上的安装教程
  • 家政服务小程序,打造智慧家政新体验
  • Rust:指针 `*T` 和引用 `T`的区别
  • 农业农村大数据应用场景|珈和科技“数字乡村一张图”解决方案
  • Docker 搭建mysql 连接超时问题,xxl-job启动mysql连接报错,禁用dns
  • HTML5+Canvas实现的鼠标跟随自定义发光线条源码
  • MyBatisPlus--分页插件
  • 【第四课】冒泡排序,快速排序(acwing-785)
  • Python与PyTorch的浅拷贝与深拷贝
  • 梯度下降与权重更新解析
  • 有限元分析学习——Anasys Workbanch第一阶段笔记(12)静力学分析基本参数及重力对计算结果的影响
  • 基于Android 位置定位的考勤 APP 设计与实现
  • 虚幻基础2:gameplay框架
  • 鸿蒙中选择地区
  • 归子莫的科技周刊#1:一周是一年的2%
  • 4.Spring AI Prompt:与大模型进行有效沟通
  • 利用Ai,帮我完善了UsbCamera App的几个界面和设置功能
  • 【蓝桥杯选拔赛真题63】C++奇数 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解
  • 位运算练习