当前位置:首页 » 《随便一记》 » 正文

[CTFSHOW][WEB]文件上传_fallingskies

12 人参与  2022年03月01日 10:52  分类 : 《随便一记》  评论

点击全文阅读


目录

web151


web151

根据提示,前端验证,那我们只需要抓包修改就完事儿了。

先传一个正常的图片。

查看数据包

修改数据包,传一个小马。(数据较多时,可以点击开始处,按住shift键,滑动到末尾点击)

右键,选择paste from file可以从文件中粘贴内容。

 

蚁剑连接

找到flag

web152

和上题的步骤一样可以成功上传文件

看一下后端是如何校验的。

<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-10-24 19:34:52
# @Last Modified by:   h1xa
# @Last Modified time: 2020-10-24 21:20:33
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
error_reporting(0);
if ($_FILES["file"]["error"] > 0)
{
    $ret = array("code"=>2,"msg"=>$_FILES["file"]["error"]);
}
else
{
    $filename = $_FILES["file"]["name"];
    $filesize = ($_FILES["file"]["size"] / 1024);
    if($filesize>1024){
        $ret = array("code"=>1,"msg"=>"文件超过1024KB");
    }else{
        if($_FILES['file']['type'] == 'image/png'){
            move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".$_FILES["file"]["name"]);
            $ret = array("code"=>0,"msg"=>"upload/".$_FILES["file"]["name"]);
        }else{
            $ret = array("code"=>2,"msg"=>"文件类型不合规");
        }
        
    }
}
echo json_encode($ret);

只是检查文件类型为image/png即可。

 web153

利用.user.ini文件进行上传绕过

参考​​​​​​https://segmentfault.com/a/1190000011552335

自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果使用 Apache,则用 .htaccess 文件有同样效果。

 除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。

在 .user.ini 风格的 INI 文件中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置可被识别。 

PHP: php.ini 配置选项列表 - Manual

从列表中找到可以利用的配置选项。

auto_append_file

auto_prepend_file

即只要目录下存在一个php文件,即可添加其它类型文件来以php形式解析。

这里upload目录下刚好有一个index.php

 蚁剑连接

 看一下后端的上传限制

<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-10-24 19:34:52
# @Last Modified by:   h1xa
# @Last Modified time: 2020-10-24 21:46:57
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
error_reporting(0);
if ($_FILES["file"]["error"] > 0)
{
    $ret = array("code"=>2,"msg"=>$_FILES["file"]["error"]);
}
else
{
    $filename = $_FILES["file"]["name"];
    $filesize = ($_FILES["file"]["size"] / 1024);
    if($filesize>1024){
        $ret = array("code"=>1,"msg"=>"文件超过1024KB");
    }else{
        if($_FILES['file']['type'] == 'image/png'){
            $arr = pathinfo($filename);
            $ext_suffix = $arr['extension'];
            if($ext_suffix!='php'){
                move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".$_FILES["file"]["name"]);
                $ret = array("code"=>0,"msg"=>"upload/".$_FILES["file"]["name"]);
            }else{
                $ret = array("code"=>2,"msg"=>"文件类型不合规");
            }
            
        }else{
            $ret = array("code"=>2,"msg"=>"文件类型不合规");
        }
        
    }
}
echo json_encode($ret);

 web154

和上题一样,upload下有index.php文件,那应该也是.user.ini绕过文件上传限制。

 发现对文件内容进行了检测。

抄一张图片

修改一句话木马后绕过

 查看后端上传限制,发现只要内容中包含php关键字就会被禁止上传。 

<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-10-24 19:34:52
# @Last Modified by:   h1xa
# @Last Modified time: 2020-10-26 15:30:10
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
error_reporting(0);
if ($_FILES["file"]["error"] > 0)
{
    $ret = array("code"=>2,"msg"=>$_FILES["file"]["error"]);
}
else
{
    $filename = $_FILES["file"]["name"];
    $filesize = ($_FILES["file"]["size"] / 1024);
    if($filesize>1024){
        $ret = array("code"=>1,"msg"=>"文件超过1024KB");
    }else{
        if($_FILES['file']['type'] == 'image/png'){
            $arr = pathinfo($filename);
            $ext_suffix = $arr['extension'];
            if($ext_suffix!='php'){
                $content = file_get_contents($_FILES["file"]["tmp_name"]);
                if(strrpos($content, "php")==FALSE){
                    move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".$_FILES["file"]["name"]);
                    $ret = array("code"=>0,"msg"=>"upload/".$_FILES["file"]["name"]);
                }else{
                    $ret = array("code"=>3,"msg"=>"文件内容不合规");
                }
                
            }else{
                $ret = array("code"=>2,"msg"=>"文件类型不合规");
            }
            
        }else{
            $ret = array("code"=>2,"msg"=>"文件类型不合规");
        }
        
    }
}
echo json_encode($ret);

 

 


点击全文阅读


本文链接:http://zhangshiyu.com/post/35561.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1