实验吧 WEB 上传绕过

因为是初学者,所以写的比较详细。看到其他大佬写的博客,看了半天才看明白。

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