zoukankan      html  css  js  c++  java
  • 对文件上传的简单总结

    不久前做完了大部分的upload靶场的题目,向对此进行一下稍微的总结,方便以后照着看吧

    (这里只是最简单的进行介绍,都是以upload靶场为基础)

    客户端

    ​1 JS检查

    ​在前端js代码中添加允许条件(如添加 .php使 php文件可上传)或者用相关插件
    ​bp抓包后修改  .jpg文件为 .php文件绕过

    服务端

    检查后缀

    黑名单

    ​1 上传特殊可解析后缀

    ​用 .php3 , .phtml等特殊的文件格式尝试绕过
     
    PS:​过滤<? 和 php后缀,尝试用 <script language='php'>assert($_REQUEST['cmd'])</script>

    ​2 上传 .htaccess

    ​先上传一个 .htaccess 文件(没有文件名)(内容为:SetHandler application/x-httpd-php),再上传图片马(此时文件都会被解析成php)

    ​3 后缀大小写绕过

    ​例如将 .php 文件修改成 .PHP 或者 .PHp 等

    ​4 空格绕过

    ​​①
    在后缀名中加"(空格)"绕过,如 filename = "info.php(空格)"
    ​此时可能会有中特殊情况,用到(点+空格+点)来进行绕过,如 "filename = info.php.(空格)."

    ​5 点绕过

    ​在后缀名中加"."绕过,如 filename = "info.php."

    ​6 ::$DATA绕过

    ​在后缀名中加"::$DATA"绕过,如 filename = "info.php::$DATA"

    ​7 配合解析漏洞

    (暂无)

    ​8 双后缀名绕过

    ​此时文件会把文件后缀替换为空,所以双写绕过,如 filename = "info.pphphp"

    白名单

    ​1 MIME绕过

    ​​bp抓包后修改 content-type绕过

    ​2 %00截断

    ​①
    在路径用 %00 截断,如 save_path = ../upload/info.php%00
    ​当 save_path 通过POST方法传入,与上一样,但要注意同时要在二进制文件当中进行修改(%00 不能再自动解码)

    ​3 0x00截断

    同上

    ​4 0x0a截断

    同上

    检查内容

    ​1 文件头检查

    ​2 突破getimagesize()

    ​​直接上传图片马

    ​​3 突破exif_imagetype()

    ​​直接上传图片马

    ​4 突破move_uploaded_file()

    ​00截断

    ​5 二次渲染

    这个比较难概括,请参考

    ​https://xz.aliyun.com/t/2657#toc-13

    这位师傅的这篇文章

    其他

    ​条件竞争

    ​通过向服务器不断发送(同样的)webshell(让其不能短时间内及时处理)
  • 相关阅读:
    python--模块与包
    内置函数 的总结
    迭代器 生成器 列表推导式 生成器表达式的一些总结
    函数的有用信息 带参数的装饰器 多个装饰器装饰一个函数
    函数名的应用(第一对象) 闭包 装饰器
    动态参数 名称空间 作用域 作用域链 加载顺序 函数的嵌套 global nonlocal 等的用法总结
    函数的初识 函数的返回值 参数
    文件操作 常用操作方法 文件的修改
    遍历字典的集中方法 集合的作用 以及增删查的方法
    计算机硬件的小知识
  • 原文地址:https://www.cnblogs.com/yanwusheng/p/13347825.html
Copyright © 2011-2022 走看看