[英]Connection refused on python sockets (port is open, I can connect with nc)
因此出於個人原因,我想連接到通過telnetlib創建的套接字,我可以從netcat連接到它,但是當我從python嘗試時,它拒絕連接。
tn.write(b"/usr/bin/nc -l -p 3333 -e /bin/sh\n")
print("netcat listening on 3333 on target, trying to connect")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((tn.host, 3333))
s.send('ls')
print(s.recv(1024))
s.close()
如果我可以通過netcat連接到它(例如在tn.write()之后放置無限循環)
您的比賽條件很經典:
包含啟動nc
命令的數據包僅在s.connect
的連接請求(TCP SYN數據包)之前的十億分之一秒發送。 甚至可能在命令nc
啟動之前SYN
到達遠程主機。
您需要添加適當的同步。 根據您顯示的代碼,實際上首先不需要使用兩個通道,那么為什么不通過現有的telnet通道將ls
發送到遠程主機呢?
如果您絕對必須使用第二個頻道,請嘗試以下選項之一:
s.connect
之前添加import time
和s.connect
time.sleep(5)
。 這樣,連接嘗試將延遲5秒鍾。 但是,通常不能保證5秒就足夠了。 另請注意,您的代碼具有三個不同的安全漏洞:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.