前几天在看日系图书《网络是怎么连接的》,今天就遇到了 Socket 的问题。算是浏览器连接的最基本的问题。
服务端(控制端)
accept() 是一个阻塞方法,等待客户端的连接,有程序连进来就可以使用 socket 发送指令了。
1 | from socket import * |
客户端(被控端 / 木马)
其实到这里还是最简单的 socket 通讯。黑客的部分是需要植入木马:把整个客户端程序在后台偷偷启动起来,然后连接到指定服务器的地址。
公司/家庭的防火墙通常拦截外部连入,但放行内部主动连出。所以肉鸡主动连黑客,更容易穿透(有点反弹 shell 那味了)。
1024 是缓冲区大小,表示本次 recv 最多读取 1024 字节。
这里的 demo 使用 127.0.0.1。连接之后就可以从服务器收指令了,然后写业务逻辑,用 print 替代了原本的 os 模块。
1 | import os |
核心要点总结
| 要点 | 说明 |
|---|---|
S.accept() | 阻塞等待,返回新套接字 s 和客户端地址 |
0.0.0.0 | 监听所有网卡 |
127.0.0.1 | 本地回环,仅本机测试 |
| 反向连接 | 肉鸡主动连控制端,穿透防火墙 |
recv(1024) | 单次最多读 1024 字节,超量需多次接收 |
print 替代 os.system | 学习阶段安全做法 |
本博客所有文章除特别声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明来源 镜湖!
评论


