zoukankan      html  css  js  c++  java
  • buuctf CheckIn

    文件上传

    黑名单过滤

    调用了php的exif_imagetype()函数

    利用文件头GIF89a绕过即可

    过滤了文本内容<?

    <script language='php'><script>绕过即可

    修改MIME和利用特殊扩展名均失败

    正确姿势:

    利用 .user.ini

    .user.ini

    我们先在php手册上看一下对.user.ini的介绍:

    也就是说我们可以在.user.ini中设置php.iniPHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置,而且只要是在使用 CGI/FastCGI 模式的服务器上都可以使用.user.ini

    在p牛的文章中提到了两个有趣的设置:auto_prepend_fileauto_append_file

    我们再到手册中看了下这两个设置的定义:

    大致意思就是:我们指定一个文件(如a.jpg),那么该文件就会被包含在要执行的php文件中(如index.php),类似于在index.php中插入一句:require(./a.jpg);

    这两个设置的区别只是在于auto_prepend_file是在文件前插入;auto_append_file在文件最后插入(当文件调用的有exit()时该设置无效)

     

    看过.user.ini的分析后我们的思路应该比较清晰了,我们可以上传一个这样的.user.ini

    GIF89a
    auto_prepend_file=a.jpg

    然后再上传一个这样的图片马a.jpg:

    GIF89a
    <script language='php'>system('cat /flag');</script>

    使上传路径下的php文件包含a.jpg
    相当于调用require()函数


    访问上传路径下的php文件即可得到flag
    或者可以在a.jpg里写入一句话
    菜刀连接后自己找flag
  • 相关阅读:
    django.db.utils.OperationalError: (1050, "Table '表名' already exists)解决方法
    MySQL创建数据库与创建用户以及授权
    ubantu安装mysql
    sed命令详解
    docker-compose教程(安装,使用, 快速入门)
    Hive bucket表
    hive分区(partition)简介
    HIve实战分析Hadoop的日志
    hive 元数据解析
    hive学习笔记之-数据类型
  • 原文地址:https://www.cnblogs.com/Chr1sto/p/12173191.html
Copyright © 2011-2022 走看看