WEB 学习 upload 基础

文件上传 防护

  • 客户端javascript校验(一般只校验文件的扩展名)
  • 服务端校验
    • 文件头content-type字段校验(image/gif)
    • 文件内容头校验(GIF89a)
    • 目录路经检测(检测跟Path参数相关的内容)
    • 文件扩展名检测 (检测跟文件 extension 相关的内容)
    • 后缀名黑名单校验
    • 后缀名白名单校验
    • 自定义正则校验
  • WAF设备校验(根据不同的WAF产品而定)

后缀名检测

很多时候 不能存在 .php 后缀 (黑名单检测 过滤掉 php 后缀的文件)
我们 需要直接 将文件后缀改为 jpg 等从而 绕过 后缀名检测

服务端MIME类型检测

Content-Type: 根据上传文件 后缀名定义
可以通过 burp 抓包 修改
(上传图片 Content-Type 必须为 imge/jpeg image/png image/gif)

文件扩展名检测

黑名单: PHP重要

文件类型 扩展名
HTML html, htm, sthml, shtm
PHP php, php2, php3, php4, php5, phtml, pwml
ASP asp, aspx, ascx, ashx, asa, cer, cdx
JSP jsp, jspx, jspf
其他 xml, ini, htaccess, cgi, pl, js, exe, bat, swf

文件内容检测

  • 修改文件头

用 burp 抓包 在内容的 位置加上 对呀的文件头
gpg: GIF89a

例题: Syc geek 10th 你有特洛伊么

题目存在过滤
我们写一个 一句话木马 修改后缀名为 .jpg

 

然后 用 burp 抓包

然后 构造发包

  1. 因为过滤了 php 后缀名 用到 .phtml
  2. 添加文件头 GIF89a
  3. 又过滤了 '<?'

 

修改过程

上传成功
我们就能 去访问这个 文件目录了

传入 system("cat /flag/flag.txt"); 得到 flag 或者利用
菜刀链接

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注