当获得一个Shell(无论是WebShell还是CmdShell)时,有时需要将要利用的程序或文件上传至目标服务器,有时需要将目标服务器上的文件下载至本地。如果文件过大(如Web日志、程序源码、数据库文件),则还会面临丢包、效率低等问题。现在市面上常见的WebShell管理工具都自带文件管理器功能,可以一键完成上传、下载、新建、删除等操作。如果使用的是CmdShell,那么就稍微麻烦一些,需要利用服务器自带的程序或第三方软件来进行这些操作。
本章将介绍在Windows的CmdShell、PowerShell和Linux的BashShell下如何进行文件的上传、下载、解压和压缩等操作。通过本章的学习,读者将掌握文件操作的基本方法和技巧,为后续章节的实操阶段中的文件传输环节提供必要的技术支持。
1.cmd
1)使用“set”命令创建并写入文件。
2)使用“echo”命令创建并写入文件。
3)使用“echo”命令追加写入文件。
4)使用“set”命令不换行追加写入文件。
5)使用“echo”命令覆盖原文件内容后写入。
6)使用“echo”命令无空格创建并写入文件。
7)创建空文件。
8)复制文件。
9)移动文件。
2.PowerShell
1)执行命令“Set-Content”创建并写入文件。
2)执行命令“write-output”,对文件内容进行编码后创建并写入文件。
3)执行命令“New-Item”创建一个空文件。
4)执行命令“Copy-Item”复制一个文件。
5)执行命令“Move-Item”移动文件。
1)执行命令“type”查看文件内容。
2)执行命令PowerShell cmdlet“Get-Content”查看文件内容。
1.PowerShell
1)使用System.Net.WebClient类下载文件。
2)下载并执行。
3)使用Invoke-WebRequest模块下载文件。
4)使用后台智能传输服务BitsTransfer下载文件。
2.PHP
将以下代码保存为download.php。
执行以下命令从远程下载文件到服务器。
3.Python
4.VBS
1)将以下代码保存为1.vbs,执行命令“cscript 1.vbs”下载文件。
2)将以下代码保存为1.vbs,执行命令“cscript 1.vbs”下载文件。
3)将以下代码保存为1.vbs。
执行以下命令下载文件。
5.bitsadmin
bitsadmin(后台智能传送服务)是Windows系统内置的一个命令行工具,用于创建、下载或上传作业并监视作业进度。
6.certutil
certutil.exe是Windows系统内置的工具,是Windows证书服务工具组件的一部分。它不仅可以实现转储和显示证书颁发机构等操作,还可以下载文件,以编码形式传输文件。
使用certutil传输文件会生成缓存,位置为%USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content。执行以下命令可删除缓存。
1.makecab/expand
makecab是Windows内置的无损数据压缩工具,expand是Windows内置的解压缩软件,可以解压由makecab制作的压缩文件。
执行以下命令可打包单个文件。
执行以下命令解压一个由makecab制作的文件。
批量压缩时,首先把当前目录或其他目录中需要压缩的文件名写入一个文本文件file.txt中,格式如图3-1所示。执行以下命令可压缩多个文件。
该命令会在当前目录中生成一个文件夹,压缩包保存在此文件夹中。如果压缩的文件过大,那么添加参数“/d MaxDiskSize=0”可取消大小限制。
图3-1 把需要压缩的文件名写入一个文本文件中
执行expand命令可解压多个文件。
2.WinRAR
WinRAR是一种非常流行且功能强大的压缩包管理器,不仅有着方便的图形化的压缩、解压缩界面,还支持命令行操作。在WinRAR安装目录中,有可执行文件rar.exe和UnRAR.exe,分别用作压缩和解压缩文件。
1)执行以下命令将C:\test文件夹下的所有文件压缩为rar.rar。
2)执行以下命令,只压缩某个文件。
3)添加参数-p,为压缩包添加密码,需要在交互模式下。
参数a代表添加文件到压缩文档中,参数-r代表递归子目录压缩,参数-m3代表压缩等级为标准,压缩等级从0~5。
4)执行以下命令解压压缩包。
或
3.7-Zip
7-Zip是一款免费且开源的文件归档工具,适用于Windows、Linux和Mac OS。它支持多种文件格式,包括7z、ZIP、RAR、GZIP、TAR和BZIP2,可用于压缩和解压缩文件及文件夹,还支持加密。
1)执行以下命令将C:\test文件夹下的所有文件压缩为test.7z。
2)执行以下命令,只压缩某个文件。
3)添加参数-p,为压缩包添加密码。
参数a代表添加文件到压缩文档中,参数-r代表递归子目录压缩。
4)执行以下命令解压压缩包到C:\users\文件夹中。
参数-o指定解压后释放文件的位置。
4.BandiZip
Bandizip是一款Windows文件归档和压缩程序,支持多种文件格式的压缩和解压缩,包括ZIP、RAR、7Z、TAR等。
1)执行以下命令,将C:\test文件夹下的所有文件压缩为test.zip。
2)添加参数-p,为压缩包添加密码。
参数a代表添加文件到压缩文档中,参数-r代表递归子目录压缩。
3)执行以下命令解压压缩包到C:\inetpub\文件夹中。
5.PowerShell
PowerShell功能强大,当然也具备压缩与解压缩的功能。
1)执行以下PowerShell cmdlet压缩文件或文件夹,多个文件以逗号分隔。
2)执行以下PowerShell cmdlet解压压缩包。
1)使用“touch”命令创建空内容文件。
2)使用重定向创建空内容文件。
3)执行系统命令,并使用重定向符号将命令回显写入文件,例如输出ls命令的回显至文件中。
4)使用“echo”命令创建空内容文件。
5)使用“echo”命令创建文件,并将php一句话木马写入。
6)使用“echo”命令追加写入文件。
7)使用“echo”命令添加参数-e,处理特殊字符写入文件(例如,将\n作为换行符处理)。
8)使用“echo”命令写入多行内容到文件。
9)使用“echo”创建文件,然后将经过base64编码的php一句话木马写入文件。
10)使用“printf”命令创建文件,并将php一句话木马写入文件。
11)使用“cat”命令结合eof创建并编辑文件(exit方式同理)。
12)复制文件。
13)移动文件。
1)执行“cat”命令查看文件内容。
2)执行“cat”命令查看文件内容并显示行号。
3)执行“less”命令查看文件,支持翻页、查找、跳转页等功能。
4)执行“more”命令查看文件,支持分页显示。
5)执行“head”命令查看文件前几行内容。
6)执行“tail”命令查看文件末尾几行内容。
1)在当前目录搜索指定文件名的文件。
2)在整个文件系统搜索指定文件名的文件。
3)按指定权限查找文件。
4)列出当前目录中所有“.php”文件内含有“$_POST”字符串的文件。
1)通过“curl”命令下载文件。
2)使用“wget”命令下载文件。
3)使用“wget”命令断点续传下载文件。
4)使用Shell脚本,将以下代码保存为download文件。
执行以下命令,将远程文件下载至本地。
tar是Linux系统中常用的文件归档工具,它用于将多个文件打包成一个文件(称为Tarball),扩展名一般为“.tar”。如果Tarball文件又经过压缩,那么扩展名通常为“.tar.gz”“.tar.bz2”。Tarball通常用于分发软件包、备份数据和通过Internet传输大型文件。
1)仅打包不压缩。
2)打包并进行“gzip”压缩。
3)解压“gzip”压缩文件。
4)排除指定文件类型后打包压缩文件。
5)只将指定类型文件打包压缩。
还有其他一些格式可以压缩和解压文件,如表3-1所示。
表3-1 其他格式的压缩和解压