靶机项目地址:https://github.com/c0ny1/upload-labsphp
1.直接上传php一句话,报错html
2.信息回显速度很快,猜测是前端验证,能够在修改前端代码,删掉checkFile()函数,或者上传jpg后缀经过burp抓包修改php后缀绕过前端验证前端
3.上传成功git
4.菜刀链接成功github
5.分析源码web
Javascript前端语言定义函数,仅在前端判断文件的后缀。shell
1.直接上传,发现提示文件类型不正确apache
2.抓包修改文件类型,改为image/jpegwindows
3.改为image/jpeg浏览器
4.发包,上传成功
5.菜刀链接成功
6.分析源码
仅这条if语句判断了上传文件的类型,修改Content-Type便可绕过。
1.直接上传,提示
2.猜测多是黑名单限制,利用其它后缀名进行绕过php3、phtml
3.上传成功,菜刀链接成功
4.分析源码
创建了个黑名单,其中的后缀都不能上传。可是其它可解析php的后缀能够上传并解析。
1.直接上传,提示
2.尝试利用apache解析漏洞,apache读取后缀从右向左,若碰见不认识的后缀名便向前继续读取,直到认识的后缀。
3.上传成功,链接菜刀成功
4.方法二,其实这关考察的目的是 .htaccess文件,上传一个.htaccess内容以下的文件:
SetHandler application/x-httpd-php
5.这样全部文件都会解析为php,而后再上传图片马,就能够解析:
6.链接菜刀成功
7.分析源码
这里把全部的后缀都过滤了,除了.htaccess,因此能够利用上传.htaccess规则来进行绕过,把能够上传的文件后缀解析成php。
1.直接上传,提示
2.上传.htaccess失败,可能也把.htaccess给过滤了,尝试使用apache解析漏洞绕过
3.链接菜刀成功
4.其实这题考察的是大小写绕过,
5.分析源码
在上一题pass-04的基础上多了个过滤.htaccess,可是没有对后缀的大小写进行统一,这里因而能够经过大小写绕过。
1.直接上传失败,加空格绕过
2.上传成功
3.菜刀链接成功
4.源码分析
仍是黑名单,可是没有对后缀名进行去空处理,可在后缀名中加空绕过。
1.尝试利用windows特性,会自动去掉后缀名中最后的 . ,抓包,在后缀加 .
2.上传成功
3.链接菜刀成功
4.分析源码
一样是黑名单,可是没有对后缀名进行去 . 处理,利用windows特性,会自动去掉后缀名中最后的 . ,可在后缀名中加 . 绕过。
1.尝试使用 ::$DATA 加在后缀以后进行绕过
2.上传成功
3.链接菜刀成功
4.分析源码
php在window的时候若是文件名+"::$DATA"会把::$DATA以后的数据当成文件流处理,不会检测后缀名.且保持"::$DATA"以前的文件名,目的就是不检查后缀名。
1.经过尝试构造,加上点空格点绕过
2.上传成功
3.链接菜刀成功
4.分析源码
仍是黑名单过滤,并删掉了文件名末尾的点,路径拼接的是处理后的文件名,经过构造 点+空格+点 绕过过滤。
1.直接上传发现把后缀php替换为空
2.这样能够使用双写绕过
3.上传成功
4.链接菜刀成功
5.分析源码
设置黑名单,把有问题的后缀名都替换为空,可是能够利用双写绕过。
1.直接上传,提示
2.应该是用到了白名单,抓包查看,尝试使用%00截断进行绕过
3.上传成功
4.菜刀链接成功
5.分析源码
白名单机制,可是$img_path直接拼接,所以能够利用%00截断绕过。
1.上传抓包查看,能够使用00截断,php后空格十六进制的20改成00
2.上传成功
3.菜刀链接成功
4.源码分析
一样是白名单,此次的save_path是经过post传进来的,仍是利用00截断,但此次须要在二进制中进行修改,由于post不会像get对%00进行自动解码
1.制做图片马,copy 1.jpg /b + shell.php /a webshell.jpg
2.上传图片马
3.上传成功
4.分析源码
经过读文件的前2个字节判断文件类型,所以直接上传图片马便可。也能够在一句话文件内容前面加图片的标识例如GIF89a。
1.一样直接上传图片马
2.上传成功
3.分析源码
这里使用getimagesize函数获取文件类型,仍是直接就能够利用图片马就可进行绕过。也能够在一句话文件前加图片标识码例如GIF89a。
1.一样能够使用图片立刻传
2.上传成功
3.源码分析
这里是用php_exif模块来判断文件类型,仍是直接就能够利用图片马就可进行绕过。
1.直接上传图片马
2.成功上传
3.分析源码
综合判断了后缀名、content-type,以及利用imagecreatefrompng
判断是否为png图片,最后再作了一次二次渲染。
1.提示代码审计,因此先分析下源码
这里先将文件上传到服务器,而后判断文件后缀是否在白名单里,若是在则重命名,不然删除,所以咱们能够上传1.php只须要在它删除以前访问便可,能够利用burp的intruder模块不断上传,而后咱们不断的访问刷新该地址便可。
2.抓包转到intruder模块,进行不断上传
3.在不断上传的中,不停刷新浏览器地址,便可访问到文件内容
1.经过代码审计,这个对文件后缀名作了白名单判断,而后会一步一步检查文件大小、文件是否存在等等,将文件上传后,对文件从新命名,一样存在条件竞争的漏洞。能够不断利用burp发送上传图片马的数据包,因为条件竞争,程序会出现来不及rename的问题,从而上传成功
2.经过条件竞争,图片马来不及更名就上传了
3.用文件包含查看文件
1.源码审计,发现move_uploaded_file()函数中的img_path是由post参数save_name控制的,所以能够在save_name利用00截断绕过
2.上传成功
3.文件执行成功
1.代码审计
2.经过上传一个php文件,改包
完。