BUUCTF[GXYCTF2019]BabyUpload

16 篇文章 0 订阅
这篇博客探讨了PHP文件上传的限制与安全措施。作者通过示例代码展示了如何使用.htaccess防止直接执行PHP文件,并检查上传文件的内容以避免PHP代码注入。文章还提到对上传文件类型、大小的检查以及对文件后缀的严格过滤,确保了服务器的安全。
摘要由CSDN通过智能技术生成

传了php文件,还有phtml类的都不行
在这里插入图片描述
传jpg结尾的
在这里插入图片描述

传图片马,但是连接不上
在这里插入图片描述

传.htaccess文件

在这里插入图片描述
这里文件名不能带php文件里面内容也不能是php,可以用scirpt
借用之前的.htaccess使得上传的文件以php形式执行
不过类型太露骨,把content-type改一下

在这里插入图片描述
在这里插入图片描述
传木马文件

在这里插入图片描述

在这里插入图片描述
蚁剑连接找到flag

在这里插入图片描述
里面的Index.php文件,蚁剑连接后找到的关于过滤的代码

<?php
session_start();
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /> 
<title>Upload</title>
<form action=\"\" method=\"post\" enctype=\"multipart/form-data\">
上传文件<input type=\"file\" name=\"uploaded\" />
<input type=\"submit\" name=\"submit\" value=\"上传\" />
</form>";
error_reporting(0);
if(!isset($_SESSION['user'])){
    $_SESSION['user'] = md5((string)time() . (string)rand(100, 1000));
}
if(isset($_FILES['uploaded'])) {
    $target_path  = getcwd() . "/upload/" . md5($_SESSION['user']);
    $t_path = $target_path . "/" . basename($_FILES['uploaded']['name']);
    $uploaded_name = $_FILES['uploaded']['name'];
    $uploaded_ext  = substr($uploaded_name, strrpos($uploaded_name,'.') + 1);
    $uploaded_size = $_FILES['uploaded']['size'];
    $uploaded_tmp  = $_FILES['uploaded']['tmp_name'];
 
    if(preg_match("/ph/i", strtolower($uploaded_ext))){
        die("后缀名不能有ph!");
    }
    else{
        if ((($_FILES["uploaded"]["type"] == "
            ") || ($_FILES["uploaded"]["type"] == "image/jpeg") || ($_FILES["uploaded"]["type"] == "image/pjpeg")) && ($_FILES["uploaded"]["size"] < 2048)){
            $content = file_get_contents($uploaded_tmp);
            if(preg_match("/\<\?/i", $content)){
                die("诶,别蒙我啊,这标志明显还是php啊");
            }
            else{
                mkdir(iconv("UTF-8", "GBK", $target_path), 0777, true);
                move_uploaded_file($uploaded_tmp, $t_path);
                echo "{$t_path} succesfully uploaded!";
            }
        }
        else{
            die("上传类型也太露骨了吧!");
        }
    }
}
?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值