在vm上我使用了命令:nc -l -p 8221 -e / bin / bash并制作了一个python3脚本:
def netcat():
print ("starting connection")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("192.168.1.60", 8221))
while True:
user = input("what to send?: ")
s.sendall(bytes(user, "utf-8"))
time.sleep(5)
word = "bob"
data = s.recv(4096)
if data == b"":
pass
else:
data = data.decode("utf-8")
print ("Received:", repr(data))
print ("Connection closed.")
s.shutdown(socket.SHUT_WR)
s.close()
netcat()
这个脚本不起作用。通过不工作我的意思是当我用我的python脚本运行命令时,让我们说" pwd",它只是加载但从不运行。 当,而不是运行python脚本我将运行nc 192.168.1.60 8221,它会工作正常。有什么想法吗?
答案 0 :(得分:2)
来自input()
的{{3}}:
然后该函数从输入中读取一行,将其转换为字符串 (剥离尾随换行符),然后返回。
但是Bash在规范模式下运行,并且在新线路到达之前不会处理输入。这不会发生,导致recv
永远阻止。
在+ '\n'
之后添加user = input("what to send?: ")
来修复它。