FTP文件传输原理
在遇到了一个wireshark数据包分析题之后,看到了ftp的相关信息,但是没找到相关的flag信息,请教了大佬的解释,才知道ftp文件传输并不是在21端口,ftp文件传输有主动和被动两种方式,
被动(PASV)模式:
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条控制连接。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。
服务器控制端口(21),服务器端等待的数据传输端口(动态申请)
ftp服务器动态申请一个端口(一般大于1024)然后告诉客户端,我在这个端口上等待你的连接,客户端收到以后便向服务器的这个端口发起连接,数据连接建立以后,数据传输就可以开始了
端口计算方法:172,16,101,104,7,254,2567+254=2046
一次完整的被动连接及数据传输过程:
状态: 正在连接 17216101104:21
状态: 连接建立,等待欢迎消息
响应: 220 Serv-U FTP Server v64 for WinSock ready
命令: USER test
响应: 331 User name okay, need password
命令: PASS
响应: 230 User logged in, proceed
状态: 已连接
状态: 读取目录列表
命令: PWD
响应: 257 "/" is current directory
状态: 列出目录成功
状态: 正在连接 17216101104:21
状态: 连接建立,等待欢迎消息
响应: 220 Serv-U FTP Server v64 for WinSock ready
命令: USER test
响应: 331 User name okay, need password
命令: PASS
响应: 230 User logged in, proceed
状态: 已连接
状态: 开始上传 E:\Downloads\liuzhigong\liuzhigong\404htm
命令: CWD /
响应: 250 Directory changed to /
命令: TYPE A
响应: 200 Type set to A
命令: PASV
响应: 227 Entering Passive Mode (172,16,101,104,8,86)
命令: STOR 404htm
响应: 150 Opening ASCII mode data connection for 404htm
响应: 226 Transfer complete
状态: 文件传输成功,传输了 2,052 字节 (用时1 秒)
状态: 读取目录列表
命令: TYPE I
响应: 200 Type set to I
命令: PASV
响应: 227 Entering Passive Mode (172,16,101,104,8,88)
命令: MLSD
响应: 150 Opening BINARY mode data connection for MLSD
响应: 226 Transfer complete
状态: 列出目录成功
主动(PORT)模式:
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条控制连接。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。
一次完整的主动连接及数据传输过程:
状态: 正在连接 17216101104:21
状态: 连接建立,等待欢迎消息
响应: 220 Serv-U FTP Server v64 for WinSock ready
命令: USER test
响应: 331 User name okay, need password
命令: PASS
响应: 230 User logged in, proceed
状态: 已连接
状态: 开始上传 E:\Downloads\liuzhigong\liuzhigong\404htm
命令: CWD /
响应: 250 Directory changed to /
命令: TYPE A
响应: 200 Type set to A
命令: PORT 172,16,101,104,8,76
响应: 200 PORT Command successful
命令: STOR 404htm
响应: 150 Opening ASCII mode data connection for 404htm
响应: 226 Transfer complete
状态: 文件传输成功,传输了 2,052 字节 (用时1 秒)
状态: 读取目录列表
命令: TYPE I
响应: 200 Type set to I
命令: PORT 172,16,101,104,8,77
响应: 200 PORT Command successful
命令: MLSD
响应: 150 Opening BINARY mode data connection for MLSD
响应: 226 Transfer complete
状态: 列出目录成功
再回来说这一题,看到
计算端口为 4256+17=1041
端口过滤,追踪tcp流
在服务器中要查看端口,可以使用Netstat命令:
1、依次点击“开始→运行”,键入“cmd”并回车,打开命令提示符窗口。
2、在命令提示符状态下键入“netstat -a -n”,按下回车键后就可以看到以数字形式显示的TCP和UDP连接的端口号及状态。
端口相关的概念:
在网络技术中,端口(Port)包括逻辑端口和物理端口两种类型。物理端口指的是物理存在的端口,如ADSL Modem、集线器、交换机、路由器上用 于连接其他网络设备的接口,如RJ-45端口、SC端口等等。逻辑端口是指逻辑意义上用于区分服务的端口,如TCP/IP协议中的服务端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等。由于物理端口和逻辑端口数量较多,为了对端口进行区分,将每个端口进行了编号,这就是端口号
端口按端口号可以分为3大类:
1:公认端口(Well Known Port)
公认端口号从0到1023,它们紧密绑定与一些常见服务,例如FTP服务使用端口21,你在 /etc/services 里面可以看到这种映射关系。
2:注册端口(Registered Ports):
从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。
3: 动态或私有端口(Dynamic and/or Private Ports)
动态端口,即私人端口号(private port numbers),是可用于任意软件与任何其他的软件通信的端口数,使用因特网的传输控制协议,或用户传输协议。动态端口一般4915265535Linux中有限定端口的使用范围,如果我要为我的程序预留某些端口,那么我需要控制这个端口范围。/proc/sys/net/ipv4/ip_local_port_range定义了本地TCP/UDP的端口范围,你可以在/etc/sysctlconf里面定义netipv4ip_local_port_range = 1024 65000。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]
PortNamber值
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentContro1Set\Control\Tenninal Server\WinStations\RDP\Tcp]
PortNumber的值
重新启动电脑
0条评论