Upload-Labs渗透笔记

靶机项目地址:https://github.com/c0ny1/upload-labs


Pass-01

1.直接上传php一句话,报错

 

 

 

2.信息回显速度很快,猜想是前端验证,可以在修改前端代码,删掉checkFile()函数,或者上传jpg后缀通过burp抓包修改php后缀绕过前端验证

 

 

 

3.上传成功

 

 

 

4.菜刀连接成功

 

 

 

5.分析源码

 

Javascript前端语言定义函数,仅在前端判断文件的后缀。

 


 

Pass-02

1.直接上传,发现提示文件类型不正确

 

 

 

2.抓包修改文件类型,改成image/jpeg

 

 

 

3.改成image/jpeg

 

 

4.发包,上传成功

 

 

 

 

5.菜刀连接成功

 

 

 

 

6.分析源码

 

仅这条if语句判断了上传文件的类型,修改Content-Type即可绕过。

 

 


 

Pass-03

1.直接上传,提示

 

 

 

 

2.猜想可能是黑名单限制,利用其它后缀名进行绕过php3phtml

 

 

 

 

3.上传成功,菜刀连接成功

 

 

 

 

4.分析源码

 

建立了个黑名单,其中的后缀都不能上传。但是其它可解析php的后缀可以上传并解析。

 


 

Pass-04

1.直接上传,提示

 

 

 

 

2.尝试利用apache解析漏洞,apache读取后缀从右向左,若遇见不认识的后缀名便向前继续读取,直到认识的后缀。

 

 

 

 

3.上传成功,连接菜刀成功

 

 

 

 

4.方法二其实这关考察的目的是 .htaccess文件,上传一个.htaccess内容如下的文件:

SetHandler application/x-httpd-php

 

 

 

 

5.这样所有文件都会解析为php,然后再上传图片马,就可以解析:

 

 

 

 

6.连接菜刀成功

 

 

 

 

7.分析源码

 

这里把所有的后缀都过滤了,除了.htaccess,所以可以利用上传.htaccess规则来进行绕过,把可以上传的文件后缀解析成php

 


 

Pass-05

1.直接上传,提示

 

 

 

 

2.上传.htaccess失败,可能也把.htaccess给过滤了,尝试使用apache解析漏洞绕过

 

 

 

 

3.连接菜刀成功

 

 

 

 

4.其实这题考察的是大小写绕过,

 

 

 

 

5.分析源码

 

在上一题pass-04的基础上多了个过滤.htaccess,但是没有对后缀的大小写进行统一,这里于是可以通过大小写绕过

 


 

Pass-06

1.直接上传失败,加空格绕过

 

 

 

 

2.上传成功

 

 

 

 

3.菜刀连接成功

 

 

 

 

4.源码分析

 

还是黑名单,但是没有对后缀名进行去空处理,可在后缀名中加空绕过

 


 

Pass-07

1.尝试利用windows特性,会自动去掉后缀名中最后的 . ,抓包,在后缀加 .

 

 

 

 

2.上传成功

 

 

 

 

3.连接菜刀成功

 

 

 

 

4.分析源码

 

同样是黑名单,但是没有对后缀名进行去 . 处理,利用windows特性,会自动去掉后缀名中最后的 . ,可在后缀名中加 . 绕过

 


 

Pass-08

1.尝试使用 ::$DATA 加在后缀之后进行绕过

 

 

 

 

2.上传成功

 

 

 

 

3.连接菜刀成功

 

 

 

 

4.分析源码

 

phpwindow的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名.且保持"::$DATA"之前的文件名目的就是不检查后缀名

 


 

Pass-09

1.通过尝试构造,加上点空格点绕过

 

 

 

 

2.上传成功

 

 

 

 

3.连接菜刀成功

 

 

 

 

4.分析源码

 

还是黑名单过滤,并删掉了文件名末尾的点,路径拼接的是处理后的文件名通过构造 +空格+ 绕过过滤。

 


 

Pass-10

1.直接上传发现把后缀php替换为空

 

 

 

 

2.这样可以使用双写绕过

 

 

 

 

3.上传成功

 

 

 

 

4.连接菜刀成功

 

 

 

 

5.分析源码

 

设置黑名单,把有问题的后缀名都替换为空,但是可以利用双写绕过。

 


 

Pass-11

1.直接上传,提示

 

 

 

 

2.应该是用到了白名单,抓包查看,尝试使用%00截断进行绕过

 

 

 

 

3.上传成功

 

 

 

 

4.菜刀连接成功

 

 

 

 

5.分析源码

 

 

 

 

白名单机制,但是$img_path直接拼接,因此可以利用%00截断绕过

 


 

Pass-12

1.上传抓包查看,可以使用00截断,php后空格十六进制的20改为00

 

 

 

 

2.上传成功

 

 

 

 

3.菜刀连接成功

 

 

 

 

4.源码分析

 

同样是白名单,这次的save_path是通过post传进来的,还是利用00截断,但这次需要在二进制中进行修改,因为post不会像get%00进行自动解码

 


 

Pass-13

1.制作图片马,copy 1.jpg /b + shell.php /a webshell.jpg

 

 

 

 

2.上传图片马

 

 

 

 

3.上传成功

 

 

 

 

4.分析源码

 

通过读文件的前2个字节判断文件类型,因此直接上传图片马即可。也可以在一句话文件内容前面加图片的标识例如GIF89a。

 


 

Pass-14

1.同样直接上传图片马

 

 

 

 

2.上传成功

 

 

 

 

3.分析源码

 

这里使用getimagesize函数获取文件类型还是直接就可以利用图片马就可进行绕过。也可以在一句话文件前加图片标识码例如GIF89a。

 


 

Pass-15

1.同样可以使用图片马上传

 

 

 

 

2.上传成功

 

 

 

 

3.源码分析

 

这里是用php_exif模块来判断文件类型,还是直接就可以利用图片马就可进行绕过

 


 

Pass-16

1.直接上传图片马

 

 

 

 

2.成功上传

 

 

 

 

3.分析源码

 

 

 

 

综合判断了后缀名、content-type,以及利用imagecreatefrompng

判断是否为png图片,最后再做了一次二次渲染

 


 

Pass-17

1.提示代码审计,所以先分析下源码

 

这里先将文件上传到服务器,然后判断文件后缀是否在白名单里,如果在则重命名,否则删除,因此我们可以上传1.php只需要在它删除之前访问即可,可以利用burpintruder模块不断上传,然后我们不断的访问刷新该地址即可

 

2.抓包转到intruder模块,进行不断上传

 

 

 

 

3.在不断上传的中,不停刷新浏览器地址,即可访问到文件内容

 

 

 

 


 

Pass-18

1.通过代码审计,这个对文件后缀名做了白名单判断,然后会一步一步检查文件大小、文件是否存在等等,将文件上传后,对文件重新命名,同样存在条件竞争的漏洞。可以不断利用burp发送上传图片马的数据包,由于条件竞争,程序会出现来不及rename的问题,从而上传成功

 

 

 

 

2.通过条件竞争,图片马来不及改名就上传了

 

 

 

 

3.用文件包含查看文件

 

 

 

 


 

Pass-19

1.源码审计,发现move_uploaded_file()函数中的img_path是由post参数save_name控制的,因此可以在save_name利用00截断绕过

 

 

 

 

2.上传成功

 

 

 

 

3.文件执行成功

 

 

 

 


 

Pass-20

1.代码审计

 

 

 

 

2.通过上传一个php文件,改包

 

 

 

 


 

完。

 

posted @ 2020-04-06 22:40  joker0xxx3  阅读(2554)  评论(0编辑  收藏  举报