实验吧 WEB 上传绕过
因为是初学者,所以写的比较详细。看到其他大佬写的博客,看了半天才看明白。
- 首先任意上传一个文件,提示仅支持上传jpg,gif,png后缀的文件。
- 上传jpg后缀的文件,提示必须上传成后缀名为php的文件才行啊!
- 应该是对后缀名的双重检测,猜测一个在客户端,一个在服务器。因为上传除上述四种后缀名之外的文件时提示仅支持上传jpg,gif,png后缀的文件。因此猜测对后缀名jpg,gif,png的检测在客户端,对php后缀名的检测在服务器。
- 打开F12,看到有一个隐藏的表单,猜测其value是文件上传到服务器后保存的路径。
- 分析到这里,思路逐渐清晰了起来。上传一个jpg格式的文件,使用%00截断绕过服务器的检测即可。
上传一个jpg文件:
使用burpsuit截获浏览器发出的请求包,截图如下:
可以看到,上传的文件名是a.jpg,文件将保存到/uploads/a.jpg
。
将请求包发送到Repeater,并在/uploads/后面加上a.php+(这里的+可以换成别的字符):
点击Hex,将+修改为00,这样就形成了%00截断:
将+修改为%00之前,保存路径是/uploads/a.php+a.jpg
修改后文件保存路径变成了/uploads/a.php%00a.jpg
,也就是/uploads/a.php
,在服务器中检测后缀名时,%00后面的字符并不会被检测,成功绕过了服务器端的后缀检测。
点击go,即可得到flag: