upload-labs是一个包含了各种上传漏洞的靶场,搭建地址:https://github.com/c0ny1/upload-labs
Pass-04
1、查看源码可以看到此处也做了黑名单过滤,过滤的内容还不少
2、此处黑名单没有过滤.htaccess后缀,所以此处可以上传.htaccess文件进行绕过
3、.htaccess文件生效的前提条件一为httpd.conf文件中mod_rewrite模块开启,二为相同文件中的AllowOverride为All,然后就可以在网站目录下创建.htaccess文件
4、新建文本文档,构造内容:AddType application/x-httpd-php .jpg,因为windows环境下创建文件必须得有文件名,所以得将文件另存为".htaccess"
5、将.htaccess上传之后接着就可以将要上传的php文件后缀改为jpg从而进行绕过,注意这里使用老版本的phpstudy才能成功,原因我也不知道
6、解析成功
Pass-05
1、查看源码之后发现.htaccess文件也进入了黑名单,但是仔细一看并没有转换为小写,因此可以通过大写绕过
2、解析成功
Pass-06
1、查看源码之后虽然转化了小写,但是仔细一看并没有去除空格,因此可以通过加空格绕过,Windows下xx.jpg[空格] 或xx.jpg.这两类文件都是不允许存在的,若这样命名,windows会默认除去空格或点,虽然会删除末尾的点,但是不会删除末尾的空格,因此bp抓包,上传一个.php[空格].文件即可
2、解析成功
Pass-07
1、查看源码之后虽然首尾去空了,但是仔细一看并没有尾部去点,因此可以通过加点绕过
2、解析成功
Pass-08
1、查看源码之后虽然尾部去点了,但是仔细一看并没有去除::$DATA,因此可以通过加::$DATA绕过,注意仅windows适用
2、解析成功
Pass-09
1、查看源码发现代码已经写得挺完整了,但是仔细一想每个函数只会执行一次,因此可以通过加点加空格再加点来绕过黑名单,经过过滤之后还剩一个点
2、解析成功
Pass-10
1、查看源码之后发现这里使用了str_ireplace函数使用空格替代黑名单,但是可以通过双写后缀名绕过
2、解析成功
Pass-11
1.查看源码发现此处使用了白名单,限制只能上传jpg,png,gif格式,但是在进行move_uploaded_file前,利用$_GET['save_path']和随机时间函数拼接成文件存储路径,利用GET传入构造文件存储路径,导致服务器最终存储的文件名可控,可以利用这个点进行绕过,这里利用0x00进行截断
2、首先将php的版本调至小于5.3.4
3、然后查看php.ini配置文件中的magic_quotes_gpc是否为OFF
4、上传后缀为jpg的木马文件后抓包
5、在save_path后增加木马文件名和%00,此时就可以进行php解析了
6、解析成功
Pass-12
1、查看源码,此处与Pass-11相似,不同的是请求方法改成了POST方法,原理都是一样的
2、不过需要注意的是两种方法的截断有点区别,%00通过get方式传递到服务器会被自动解码,所以就变成了ascii码中数值0对应的那个字符(null),这才能达到截断的目的,但是如果是通过post方式的话,加入%00不会被服务器解码,只会原样被参数变量接收,所以这里要通过修改post数据的十六进制来达到截断的目的
3、同样抓包,增加木马文件名和a,此处a只是为了定位
4、点击上方的Hex查看十六进制,找到phpa的十六进制数,将a的十六进制改成00
5、点击Go,发现木马已写入
6、解析正常