TIER 0: Fawn
FTP
FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的协议和相应的工具
RFC 959 文档:是定义了 FTP 协议的规范
FTP 使用两个不同的端口 TCP/20 和 TCP/21 进行数据传输和控制连接
- FTP 控制连接使用 TCP/21 端口,控制连接负责处理认证、发送命令、传输目录和文件操作等
- 在主动模式下文件传输会使用到 TCP/20 端口,被动模式使用端口范围 1024-65535,但可以根据服务器配置进行更改。
尽管 FTP 在过去被广泛使用,但随着时间的推移,由于安全性方面的限制,现代网络环境中更常用的是安全的文件传输协议,如 SFTP(SSH File Transfer Protocol)和 FTPS(FTP over SSL/TLS)
部分 FTP 协议规则
FTP 协议使用命令和响应的形式进行通信
通信形式
- 客户端向服务器发送命令请求
- 服务器根据接收到的命令执行相应的操作
- 客户端收到服务器响应
FTP 命令由命令名称和参数组成,以空格分隔。例如,"USER username" 是用于指定用户名的命令。
FTP 响应由三位数字代码和可选的文本消息组成。例如,"220 Welcome to FTP server" 是一个表示服务器准备就绪的响应。
对于具体命令和响应,推荐查看 RFC 959
科普:FTP 协议早于 HTTP 协议
FTP 通信过程
FTP 通信过程包括以下几个步骤:
- 身份验证:客户端可以使用用户名和密码进行身份验证,或者选择匿名身份验证并使用预定义的匿名账号。
- 目录和文件操作:FTP 提供了一系列命令用于在服务器上进行目录和文件的操作。
- 错误处理:FTP 使用响应代码来指示命令的执行状态。
- 数据表示和传输:FTP 支持多种数据表示和传输方式,传统使用 ASCII 模式或二进制模式。
- 结束会话:客户端可以使用
QUIT命令终止会话,或者使用BYE命令。
下面是一个 FTP 通信时序图示例:
participant Client
participant Server
Client->>Server: HELLO
Server-->>Client: 220 Welcome to FTP server
Client->>Server: USER username
Server-->>Client: 331 Password required for username
Client->>Server: PASS password
Server-->>Client: 230 User logged in
Client->>Server: PASV
Server-->>Client: 227 Entering Passive Mode (192,168,0,1,10,12)
Client->>Server: RETR filename
Server-->>Client: 150 Opening data connection for filename
Server-->>Client: (data transfer)
Server-->>Client: 226 Transfer complete
Client->>Server: QUIT
Server-->>Client: 221 Goodbye
在上述时序图中,Client 和 Server 分别表示 FTP 客户端和服务器,通信过程如下:
- 客户端向服务器发送
HELLO消息 - 服务器回复
220 Welcome to FTP server消息 - 客户端发送带有用户名的
USER命令,示例中是 username - 服务器要求输入密码,并发送
331 Password required for username消息 - 客户端发送带有密码的
PASS命令,示例中是 password - 服务器发送
230 User logged in消息,确认登录成功 - 客户端请求服务器进入被动模式,使用
PASV命令 - 服务器回复
Entering Passive Mode消息,提供数据连接的IP地址和端口 - 客户端使用
RETR命令请求服务器检索文件 - 服务器确认请求,并发送
150 Opening data connection消息开始数据传输 - 服务器将文件数据传输给客户端
- 传输完成后,服务器发送
226 Transfer complete消息 - 客户端发送
QUIT命令以终止会话,或者BYE命令 - 服务器回复
221 Goodbye消息,确认终止
匿名访问 FTP
在 FTP 上进行无账户登录时,可以使用用户名 "anonymous" 或 "ftp"(取决于服务器的配置)
匿名FTP的目的是为了提供对服务器上某些文件或目录的公共访问。但是,匿名用户所获得的访问级别和权限可能因服务器配置而异。有些服务器可能只提供只读访问,而其他服务器可能允许上传文件甚至执行某些命令。
Fawn 最终的 flag 就是通过匿名访问 FTP 获得的,使用 GET 命令下载文件即可。
TIER 0: Fawn的更多相关文章
- Hack The Box( Starting Point )
Hack The Box [Starting Point] 初始点 -- 了解渗透测试的基础知识. 这一章节对于一个渗透小白来说,可以快速的成长.以下将提供详细的解题思路,与实操步骤. TIER 0 ...
- 2000条你应知的WPF小姿势 基础篇<1-7>
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师,对C#和WPF有着极深的热情.最为出色的是他维护了两个博客:2,000Things You Should Know ...
- Windows Live Write 日志客户端
下载地址 下载地址:http://wl.dlservice.microsoft.com/download/E/4/9/E494934D-C33E-486A-AB1A-82248C800922/zh-c ...
- ssd可以用作redo 盘吗?
ssd可以用作redo 盘吗? 1.ssd有写磨损,而且ssd的写性能也不是非常好,ssd只是随机读特别好,因为 ...
- [No0000129]WPF(1/7)开始教程[译]
概要 在我使用了半年多 WPF 后,是时候写点关于 WPF 基础方面的东西了.我发表了一系列针对具体问题的文章.现在是到了让大家明白为什么说WPF是一款在界面开发上带来革命的产品了. 本文针对初级-中 ...
- OpenStack_Swift源代码分析——Ring的rebalance算法源代码具体分析
1 Command类中的rebalnace方法 在上篇文章中解说了,创建Ring已经为Ring加入设备.在加入设备后须要对Ring进行平衡,平衡 swift-ring-builder object.b ...
- 利用 PGO 提升 .NET 程序性能
引子 .NET 6 开始初步引入 PGO.PGO 即 Profile Guided Optimization,通过收集运行时信息来指导 JIT 如何优化代码,相比以前没有 PGO 时可以做更多以前难以 ...
- ZAM 3D 制作简单的3D字幕 流程(二)
原地址:http://www.cnblogs.com/yk250/p/5663907.html 文中表述仅为本人理解,若有偏差和错误请指正! 接着 ZAM 3D 制作简单的3D字幕 流程(一) .本篇 ...
- ZAM 3D 制作3D动画字幕 用于Xaml导出
原地址-> http://www.cnblogs.com/yk250/p/5662788.html 介绍:对经常使用Blend做动画的人来说,ZAM 3D 也很好上手,专业制作3D素材的XAML ...
- 微信小程序省市区选择器对接数据库
前言,小程序本身是带有地区选着器的(网站:https://mp.weixin.qq.com/debug/wxadoc/dev/component/picker.html),由于自己开发的程序的数据是很 ...
随机推荐
- HTML——select下拉选择标签
select的基本语法: <select> <option></option> </select> 例子: <p>籍贯: <selec ...
- Go的接口与多态
什么是Go的接口? 接口可以说是一种类型,可以粗略的理解为他的变量是一堆方法. 一个简单的案例: r,_ := http.Get("http://www.baidu.com") i ...
- 前端使用 Konva 实现可视化设计器(12)- 连接线 - 直线
这一章实现的连接线,目前仅支持直线连接,为了能够不影响原有的其它功能,尝试了2.3个实现思路,最终实测这个实现方式目前来说最为合适了. 请大家动动小手,给我一个免费的 Star 吧~ 大家如果发现了 ...
- Linux字符设备驱动学习
注:本文是<Linux设备驱动开发详解:基于最新的Linux 4.0内核 by 宋宝华 >一书学习的笔记,大部分内容为书籍中的内容. 书籍可直接在微信读书中查看:Linux设备驱动开发详解 ...
- Asp.Net 单点登录(SSO)|禁止重复登陆|登录强制下线
背景: 先上个图,看一下效果: SSO英文全称Single Sign On(单点登录).SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其 ...
- mac os 10.15.1 懒人 .CDR
链接:https://pan.baidu.com/s/1MHbUnHWQuGVE1P36mTjmkQ 提取码:ohlu
- 开源的Datadog?可观测性平台SigNoz是否名副其实?
SigNoz号称自己是开源领域的Datadog,基于OpenTelemetry做了一套可观测性方案.夜莺从V6版本开始,也希望做全栈可观测性方案,巧了,大家目标一致,今天我们一起来对SigNoz做个初 ...
- vue目录文件结构
my-vue-app/ ├── node_modules/ # 依赖的第三方模块 ├── public/ # 公共文件,不会被打包 │ ├── index.html # 应用的入口 HTML 文件 │ ...
- Web之http学习笔记
目录 HTTP url http请求 请求行 请求方法 请求头 请求正文 http响应 响应行 状态码 响应头 响应正文 Cookie 定义: 内容: 用途: 生命周期: 隐私和安全性: Sessio ...
- python基础-字符串str " "
字符串的定义和操作 字符串的特性: 元素数量 支持多个 元素类型 仅字符 下标索引 支持 重复元素 支持 可修改性 不支持 数据有序 是 使用场景 一串字符的记录场景 字符串的相关操作: my_str ...