目录
1.用linux docer搭建靶场
1.1 upload-labs靶场下载
网址: https://github.com/sqlsec/upload-labs-docker
1.2 docker和docker-compose的安装
docker安装命令:
sudo apt-get install docker
docker-compose安装命令:
sudo apt-get install docker-compose
启动docker:
sudo service docker start
进入网站目录:
cd upload-labs-docker-main
搭建网站:
docker-compose up -d
查询docker配置开启的端口命令:
docker-compose config
查看到开放30001-30013端口共13个关卡,每一个端口对应一关。
Windows主机通过访问linux的ip+端口号即可访问
2.upload-labs通过思路
2.1第一关
查看第一关源码:
发现是js前端对文件后缀进行白名单过滤,只允许jps,png,gif,jpeg后缀通过。
通过burpsuite抓包修改后缀即可绕过前端验证
上传1.jpg抓包
修改后缀为1.php
放包成功上传1.php
2.2第二关
通过上传.htaccess文件修改将jpg格式以php格式解析(apache中才有htaccess)
创建.htaccess文件:这是把1.jpg以php格式解析
<FilesMatch "1.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
然后上传带有一句话木马的1.jpg
就会把jpg以php的格式解析以实现webshell获取
2.3第三关:
这关是对于文件类型的检测
将Content-Type内容改成图片格式即可绕过:
image/jpeg
2.4第四关:
该关是对文件头进行检测,是对第二关的改进,需要进行类型修改和文件头修改
上传带有一句话木马的1.jpg,抓包修改后缀为php并且添加头部为GIF89a?即可绕过
2.5第五关:
通过观察给出的源代码发现对这几个进行替换成空,所以双写就能绕过或者大小写
2.6第六关:
通过观察给出的代码跟第五关一样
2.7第九关:
通过查看代码可以通过pht上传,然后pht格式作为php格式解析
2.8第十关:
这关考的是条件竞争,在它没有修改文件名的时候一直访问该文件当文件被上传的时候创建一个一句话木马在该目录下。
payload:
<?php fputs(fopen('xiao.php','w'),'<?php eval($_REQUEST[1]);?>');?>
2.9第十一关:
这关是对图片马进行渲染会对图片的内容进行更改使得我们的一句话木马代码被更改,所以只需要比较两个图片哪里没有被修改而将一句话木马插入进去,再利用文件包含漏洞即可getshell。
2.10第十二关:
该关是move_uploaded_file($temp_file, $img_path)有缺陷
文件名字可控将可控名字改成shell.php/.就会绕过该函数。
上传成功
2.11第十三关:
通过%00截断还有结合之前的绕过即可通过